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
Example #2
0
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()