# T: 最短経路木 # グラフgについて始点sからの最短経路を求める # g.N: グラフgのノードの数 dijkstra(g, s): for v ← 0 to g.N - 1: dist[v] ← INF parent[v] ← NIL # 親がない状態 Tを空にする dist[s] ← 0 while True: u ← NIL minv ← INF # find minimum for v ← 0 to g.N - 1: if vがTに含まれる: continue if dist[v] < minv: u ← v minv ← dist[v] if u = NIL: break Tにuを含める for v ← 0 to g.N - 1: if weight[u][v] = INF: continue if vがTに含まれる: continue if dist[v] > dist[u] + weight[u][v]: dist[v] ← dist[u] + weight[u][v] parent[v] ← u