문제
해결 과정
- 방향그래프
- 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로
- 우선순위 큐를 이용한 다익스트라 알고리즘 이용
풀이
import sys
import heapq
n,m = map(int,sys.stdin.readline().split())
start = int(sys.stdin.readline())
graph = [[] for _ in range(n+1)]
for i in range(m):
a,b,c = map(int,sys.stdin.readline().split())
graph[a].append((b,c))
INF = int(1e9)
distance = [INF] * (n+1)
def dijkstra(start):
q = []
heapq.heappush(q,(0,start))
distance[start] = 0
while q:
dist, now = heapq.heappop(q)
if distance[now] < dist:
continue
for i in graph[now]:
cost = dist + i[1]
if cost < distance[i[0]]:
distance[i[0]] = cost
heapq.heappush(q,(cost,i[0]))
dijkstra(start)
for i in range(1, n + 1):
if distance[i] == INF:
print("INF")
else:
print(distance[i])