Here is the python implementation of Dijkstra algorithm
from heapq import heappush, heappop # 0 index base dijkstra algorithm def Dijkstra(graph, source): A = [None] * len(graph) queue = [(0, source)] while queue: path_len, v = heappop(queue) if A[v] is None: # v is unvisited A[v] = path_len for w, edge_len in graph[v].items(): if A[w] is None: heappush(queue, (path_len + edge_len, w)) # set -1 for unreachable return [-1 if x is None else x for x in A] graph = { 0: { 1:2, 2:4, 3:1 }, 1: { 2:1, 3:3 }, 2: { 4: 7}, 3: { 2: 2 }, 4: { 0:2, 3:3 }, 5: {} } source = 0 print Dijkstra(graph, source)
Output:
[0, 2, 3, 1, 10, -1]