# 求圖形 g 的最小生成樹
# T: 已在最小生成樹內的節點集合
prim(g):
    s ← 0               # 決定適當的起點

    for v ← 0 to g.N-1:
        dist[v] ← INF
        parent[v] ← NIL  # 沒有父節點的狀態

    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
        將 u 新增至 T 內 

        for v ← 0 to g.N-1:
            if g.weight[u][v] = INF: continue
            if v 已在 T 內: continue
            if dis[v] > weight[u][v]:
                dist[v] ← weight[u][v]
                parent[v] ← u