언제나 모든 문제들이 BFS, DFS로 모두로 풀리는 건 아니구만 ,,
import sys
from collections import deque
input = sys.stdin.readline
# N 도시 수, M 도로 수, K 거리 정보 X 출발 도시
N, M, K, X = map(int, input().split(' '))
graph = [[] for _ in range(N+1)]
for _ in range(M):
a, b = map(int, input().split(' '))
graph[a].append(b)
distance = [-1] *(N+1)
distance[X] = 0
# BFS 부분
q = deque([X])
while q:
now = q.popleft()
for next in graph[now]:
if distance[next] == -1:
distance[next] = distance[now]+1
q.append(next)
# K값이 distance에 있다면 i값출력 없다면 -1 출력
if K in distance:
for i in range(1, N+1):
if distance[i] == K:
print(i)
check = True
else:
print(-1)
풀이출처: https://wonyoung2257.tistory.com/71
visited
변수를 distance
변수, 즉 거리 변수로 사용해준다.-1
은 아직 방문하지 않음을 의미한다.0
이니 distance[X] = 0
이런 식으로 초기화를 해준다.next
)에 현재 탐색 중인 도시 (now
)를 넣어준다.visited
변수를 오롯이 visited
로 사용하지 말고 다양하게 사용할 줄 알아야겠다 ...한동안 안 풀었더니 머리 또 굳어버림 ...
창의력을 써 !