Dijkstra's Algorithm
From Rice Wiki
Implementation
Dijkstra(G, w, s) {
// initialize
for all v in V:
d[v] = infty
pi[v] = null
d[s] = 0
while Q is not empty:
u = Q.extractMin()
for all v in adj[u]:
if d[v] > d[u] + w(u,v):
d[v] = d[u] + w(u,v)
pi[v] = u
