Dijkstra
๋์ ๊ณผ์
def dijkstra(start):
q = []
distance = [sys.maxsize] * (n + 1)
distance[start] = 0
visited = [False] * (n + 1)
heapq.heappush(0, (0, start))
while q:
dist, node = heapq.heappop(q)
if visited[node]:
continue
for i in range(1, n+1):
if cost[node][i] == sys.maxsize:
continue
if distance[i] > distance[node] + cost[node][i]:
distance[i] = distance[node] + cost[node][i]
visited[node] = False
heapq.heappush(q, (distance[i], i))Last updated