# T: 最短経路木
# 图 g 和起点 s
dijkstra(g, s):
PriorityQueue que # 元素为 ( 暂定距离,节点编号 ) 数据组的优先队列
for v ← 0 to g.N - 1:
dist[v] ← INF
清空T
dist[s] ← 0
将 (0, s) 插入到 que
while not que.empty():
cost, u ← que.extractMin() # 得到的暂定距离最小的数据组元素,分别赋值给 cost 和 u
if dist[u] < cost: continue
将 u 加入 T
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
将 (dist[e.v], e.v) 插入 que
parent[e.v] ← u