728x90
반응형
기본적인 다익스트라 알고리즘 문제이다.
import heapq
import sys
input = sys.stdin.readline
def dijkstra(start):
q = []
heapq.heappush(q, (0, start))
dis[start] = 0
while q:
d, now = heapq.heappop(q)
if dis[now] < d:
continue
for v, w in graph[now]:
cost = d + w
if cost < dis[v]:
dis[v] = cost
heapq.heappush(q, (cost, v))
V, E = map(int, input().split())
start = int(input())
INF = 10**9
dis = [INF]*(V+1)
graph = [[] for _ in range(V+1)]
for _ in range(E):
u, v, w = map(int, input().split())
graph[u].append((v, w))
dijkstra(start)
for n in dis[1:]:
print(n if n != INF else "INF")
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1446번 지름길(python) (0) | 2021.03.22 |
---|---|
백준 알고리즘 1504번 특정한 최단 경로(python) (0) | 2021.03.22 |
백준 알고리즘 1655번 가운데를 말해요(python) (0) | 2021.03.22 |
백준 알고리즘 11286번 절댓값 힙(python) (0) | 2021.03.22 |
백준 알고리즘 1927번 최소 힙(python) (0) | 2021.03.22 |