# T: 最短経路木 # グラフgと始点s dijkstra(g, s): PriorityQueue que #(暫定距離, ノード番号)を要素とした優先度付きキュー for v ← 0 to g.N - 1: dist[v] ← INF Tを空にする dist[s] ← 0 queに(0, s)を挿入する while queが空ではない: cost, u ← que.extractMin() # 得られた組の要素をそれぞれcost, uに代入 if dist[u] < cost: continue Tにuを含める for e in g.adjLists[u]: if e.vがTに含まれる: continue if dist[e.v] > dist[u] + e.weight dist[e.v] ← dist[u] + e.weight queに(dist[e.v], e.v)を挿入する parent[e.v] ← u