백준 1753번 최단경로
문제 풀이
- 힙 자료구조를 이용해
다익스트라 알고리즘
으로 문제를 해결할 수 있습니다.
우선순위가 높은(거리가 가장 짧은)
노드를 힙에서 뽑아내 최단거리를 갱신
합니다.
코드 풀이
import sys, heapq
input = sys.stdin.readline
V, E = map(int, input().split())
K = int(input())
INF = int(1e9)
dist = [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])
def dijkstra(start):
q = []
dist[start] = 0
heapq.heappush(q, [0, start])
while q:
distance, now = heapq.heappop(q)
if dist[now] < distance:
continue
for i in graph[now]:
cost = distance + i[1]
if cost < dist[i[0]]:
dist[i[0]] = cost
heapq.heappush(q, [cost, i[0]])
dijkstra(K)
for i in dist[1:]:
if i == INF:
print('INF')
else:
print(i)