Dijkstra's Shortest Path Algorithm

From Dijstra's Algorithm Wikipedia entry.

 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[]