728x90
from heapq import heappush, heappop
v, e = map(int, input().split())
st = int(input())
graph = [[] for _ in range(v + 1)]
distance = [99999999] * (v + 1)
distance[0] = 0
for i in range(e):
x, y, val = map(int, input().split())
graph[x].append([val, y])
def dijkstra(graph, num, distance):
q = []
heappush(q, [0, num])
distance[num] = 0
while q:
w, number = heappop(q)
if w > distance[number]:
continue
for weight, route in graph[number]:
cost = w + weight
if cost < distance[route]:
distance[route] = cost
heappush(q, [cost, route])
dijkstra(graph, st, distance)
for dis in distance[1:]:
if dis == 99999999:
print('INF')
else:
print(dis)
728x90
'프로그래머스 코테 연습' 카테고리의 다른 글
프로그래머스 - 햄버거 만들기 (0) | 2022.11.08 |
---|---|
프로그래머스 - 연습 문제 - 가장 긴 팬린드롬 (2) | 2022.09.20 |
프로그래머스 연습 문제 - 올바른 괄호 (0) | 2022.08.17 |