# T: 最短路徑樹
# 圖形 g 與起點 s
dijkstra(g, s):
    PriorityQueue que     # 以 (暫定距離, 節點編號) 為元素的優先佇列

    for v ← 0 to g.N-1:
        dist[v] ← INF

    dist[s] ← 0
    在 que 中插入 (0, s)

    while not que.empty():
        cost, u ← que.extractMin() # 取出元素並將 2 個值分別指定給 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
                在 que 中插入 (dist[e.v], e.v)
                parent[e.v] ← u