Algorithm
\begin{algorithm} \caption{Dijkstra} \begin{algorithmic} \INPUT Grafo $G$ e um vértice de origem $s$ ($source$) \OUTPUT Uma lista de distância $dist$ e uma lista de predecessores $prev$ \STATE $Q \gets \emptyset$ \FORALL{vértice $v \in G.V$} \STATE $dist[v]$ $\gets \infty$ \STATE $prev[v]$ $\gets \infty$ \STATE adicione $v$ em $Q$ \ENDFOR \WHILE{$Q$ não estiver vazio} \STATE $u \gets $ vértice em $Q$ com menor distância \STATE remova $u$ de $Q$ \FORALL{vértice vizinho $v$ de $u$ que ainda está em $Q$} \STATE $distalt \gets dist[u] + w(u,v)$ \COMMENT{$w(u,v)$ é o custo da aresta de $u$ para $v$} \IF{$distalt < dist[v]$} \STATE $dist[v] \gets distalt$ \STATE $prev[v] \gets u$ \ENDIF \ENDFOR \ENDWHILE \RETURN $dist$, $prev$ \end{algorithmic} \end{algorithm}