Programming Languages/Python

Python 다익스트라 최단경로 알고리즘

minjiwoo 2022. 1. 31. 02:03
728x90
import heapq
INF = int(1e9)
n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
    a, b = map(int, input().split())
    graph[a].append((b, 1))
    graph[b].append((a, 1))

distance = [INF]*(n+1)
start = 1

def dijkstra(start): # 다익스트라 
    q = []
    heapq.heappush(q, (0, start))
    distance[start] = 0 
    
    while q:
        dist, now = heapq.heappop(q)
        if dist > distance[now]:
            continue
        for i in graph[now]:
            cost = dist + i[1] # 새로운 비용 
           
            if distance[i[0]] > cost:
                distance[i[0]] = cost
                heapq.heappush(q, (cost, i[0]))
728x90