1.
INITIALIZE-SINGLE-SOURCE(G, s)
2. S := {} /* the
set of
vertices reachable from the source s*/
3. Create a new min-priority queue Q := V[G]
4. while Q <>{}
5. do u :=
EXTRACT-MIN(Q)
6. S := S U {u}
7. for each
vertex v in Adj[u]
8.
do
RELAX (Q, u, v, w )
END
1. for each vertex v
in V[G]
2. do d[v]:=
+infinity /* priority of vertex v in Q */
3. parent[v] : = NIL /* parent of
v in the shortest path tree rooted at s */
4. d[s]:= 0
RELAX (Q, u, v, w)
1. if
d[v] > d[u]
+ w(u,v)
2. then d[v]:=
d[u] + w(u,v)
3. parent[v]:= u
4. update Q /* since priority of v is reduced */