๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด๐ป/[๐๐ฒ๐ญ๐ก๐จ๐ง] ๐๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ
[Python] ๋ฐฑ์ค 18352
๐คRyusun๐ค
2023. 6. 4. 23:56
# ๋ฐฑ์ค 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)