1 function Dijkstra(Graph, source): 2 3 create vertex set Q 4 5 for each vertex v in Graph: 6 dist[v] <-- INFINITY 7 prev[v] <-- UNDEFINED 8 add v to Q 10 dist[source] <-- 0 11 12 while Q is not empty: 13 u <-- vertex in Q with min dist[u] 14 15 remove u from Q 16 17 for each neighbor v of u: 18 if v in Q: 19 alt <-- dist[u] + length(u, v) 20 if alt < dist[v]: 21 dist[v] <-- alt 22 prev[v] <-- u 23 24 return dist[], prev[]