procedure DijkstraHeap(G = (V, E), s, ℓ)
- Entrada: grafo 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 ← ∅, H ← heap vazio
- key(s) ← 0
- for cada v ≠ s do
- key(v) ← +∞
- Heapify(V)
- while H não está vazio do
- w* ← ExtractMin(H)
- Adicione w* a X
- dist(w*) ← key(w*)
- for cada aresta (w*, y) com y ∉ X do
- Delete y de H
- key(y) ← min{key(y), dist(w*) + ℓw*y}
- Insira y em H
- Retorne dist