알고리즘 문제 풀이

이코테 개선된 다익스트라 알고리즘 코드

파란색 가운 2023. 7. 4. 14:20
import sys
import heapq
from sys import stdin
from collections import deque
sys.setrecursionlimit(10 ** 8)
sys.stdin.readline 
import sys
from sys import stdin
from collections import deque
sys.setrecursionlimit(10 ** 8)
sys.stdin.readline 
INF = int(1e9)

N,M = map(int,sys.stdin.readline().split())
start = int(input())
graph = [[] for _ in range(N+1)]
distance = [INF] * (N+1)

for _ in range(M):
    a,b,c = map(int,sys.stdin.readline().split())
    graph[a].append((b,c))

def dijkstra(start):
    distance[start] = 0
    q = []
    heapq.heappush(q,(0,start))
    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("INFINITY")
    else:
        print(distance[i])

연습용으로 기록하고 갑니다.