procedure DijkstraHeap(G = (V, E), s, ℓ)
- Entrada: grafo dirigido G = (V, E) em listas de adjacência, um vértice s ∈ V e pesos ℓe ≥ 0 para cada e ∈ E
- Pós-condição: para todo vértice v, dist(v) é a distância d(s, v)
- X ← ∅
- dist(v) ← +∞ para todo v ∈ V
- dist(s) ← 0
- H ← heap contendo apenas o par (0, s)
- while H não está vazio do
- (d, u) ← ExtractMin(H)
- if u ∈ X then
- continue
- Adicione u a X
- for cada aresta (u, v) ∈ E do
- if d + ℓuv < dist(v) then
- dist(v) ← d + ℓuv
- Insert(H, (dist(v), v))
- Retorne dist