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