Dijkstra's Algorithm
for each vertex u ∈ G.V - {s} u.d = ∞ u.pred = null u.done = false s.d = 0 Q = G.V while Q ≠ ∅ u = Q.extractMin() u.done = true for each v ∈ G.Adj[u] Relax(u,v)
if u.d + G.edge(u,v).w < v.d v.d = u.d + G.edge(u,v).w v.pred = u