https://www.acmicpc.net/problem/18352
#18352: 특정 거리가 있는 마을 찾기
첫 번째 줄에는 도시의 수 N, 거리의 수 M, 거리 정보 K 및 시작 도시의 숫자 X가 표시됩니다. (2≤N≤300,000, 1≤M≤1,000,000, 1≤K≤300,000, 1≤X≤N)
www.acmicpc.net
문제를 해결하다
- 주어진 지점에 도달하기 위해 k의 최소 거리로 지점을 찾는 문제(DFS와 BFS 모두 가능하지만 거리가 고정되어 있으므로 BFS를 사용하여 위도별로 찾는 것이 좋습니다!)
- 일방통행이 아니니 참고하세요!
암호
import sys
from collections import deque
input = sys.stdin.readline
n, m, k, x = map(int, input().split())
graph = (() for _ in range(n+1))
ans = ()
visited = (-1 for _ in range(n+1))
for _ in range(m):
a, b = map(int, input().split())
graph(a).append(b)
def bfs(v):
queue = deque()
queue.append(v)
visited(v) += 1
while queue:
now = queue.popleft()
for next in graph(now):
if visited(next) == -1:
visited(next) = visited(now) + 1
queue.append(next)
bfs(x)
for i in range(n+1):
if visited(i) == k:
print(i)
ans.append(i)
if len(ans)==0:
print(-1)
![[백준] 11549 - [백준] 11549 -](https://place.best-news.co.kr/wp-content/plugins/contextual-related-posts/default.png)