모든 도로의 거리가 1이므로 가중치가 없는 인접 리스트로 이 그래프를 표현할 수 있다.
도시의 개수가 300,000, 도로의 최대 크기가 1,000,000이므로 BFS 탐색을 수행하면 해당 문제를 해결할 수 있다.
# 특정 거리의 도시 찾기
from collections import deque
import sys
input = sys.stdin.readline
N, M, K, X = map(int, input().split())
arr = [[] for _ in range(N + 1)]
visited = [False for _ in range(N + 1)]
Result = []
que = deque()
for _ in range(M):
start, end = map(int, input().split())
arr[start].append(end)
que.append((X, 0))
while len(que) > 0:
node, distance = que.popleft()
visited[node] = True
if distance == K:
Result.append(node)
continue
else:
for i in arr[node]:
if not visited[i]:
visited[i] = True
que.append((i, distance + 1))
if Result:
Result.sort()
for v in Result:
print(v)
else:
print(-1)
정보가 많아서 도움이 많이 됐습니다.