๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ๋ฐฑ์ค€ 18352 ๋ณธ๋ฌธ

# ๋ฐฑ์ค€ 18352

import heapq
def dijkstra(graph, min_distance, start_node):
    queue = []
    heapq.heappush(queue, [0, start_node])
    min_distance[start_node] = 0
    while queue:
        current_dist, current_node = heapq.heappop(queue)
        if current_dist < min_distance[current_node] :
            min_distance[current_node] = current_dist
        for next_node in graph[current_node]:
            cost = min_distance[current_node] + 1
            if cost < min_distance[next_node]:
                min_distance[next_node] = cost
                heapq.heappush(queue, [cost, next_node])
    return min_distance

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)
min_distance = [1e9] * (n+1)
dijkstra(graph, min_distance, x)

cnt = 0
for i in range(len(min_distance)):
    if min_distance[i] == k:
        cnt += 1
        print(i)
    if i == len(min_distance)-1 and cnt == 0:
        print(-1)