다익스트라로 찾습니다. 최소거리는 늘 다익스트라
import sys
input = sys.stdin.readline
from collections import deque
def dijkstra(start):
queue = deque()
queue.append([0,start])
visited = {i: float('inf') for i in range(1,N+1)}
visited[start] = 0
while queue:
cur_dist,cur_node = queue.popleft()
for next in graph[cur_node]:
if visited[next] > cur_dist+1:
visited[next] = cur_dist+1
queue.append([visited[next], next])
return visited
N, M, K, X = map(int, input().split())
graph = {i: [] for i in range(1,N+1)}
for _ in range(M):
a, b = map(int, input().split())
graph[a] += [b]
dists_table = dijkstra(X)
flag=0
for i in range(1,N+1):
if dists_table[i]==K:
print(i)
flag=1
if not flag:
print(-1)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 11724 연결요소의 개수 (0) | 2021.08.31 |
---|---|
[백준][Python] 18234 당근훔쳐먹기 (0) | 2021.08.31 |
[백준][Python] 14442 벽 뿌수고 이동하기2 (1) | 2021.08.30 |
[백준][Python] 14938 서강그라운드 (0) | 2021.08.30 |
[백준][Python] 15886 내 선물을 받아줘 2 (0) | 2021.08.30 |