def dijkstra(G, s): N = len(G) infty = sum(list(map(lSum, G))) + 1 Marked = [] distHeap = Heap(mycmp, []) for i in range(0, N): Marked.append(infty) distHeap.insert((i, infty)) distHeap.insert((s, 0)) while not distHeap.isempty(): (v, d) = distHeap.deletemin() if Marked[v] < infty: continue Marked[v] = d for e in G[v]: (u, w) = e if Marked[u] == infty: distHeap.insert((u, d + w)) return Marked
from Heap import Heap g = Heap([1, 3, 2, 4, 1]) h = Heap() print(g.N) while (not g.isempty()): print(g.deletemin(), end=" ") print()