# グラフgから最小全域木MSTを構築する
kruskal(g):
    MST ← 空のリスト
    edges ← gのエッジをリスト化する

    edges を重みの昇順で整列する

    DisjointSet ds(g.N) # 要素数Nの互いに素な集合を生成する

    for e in edges:
        u ← eの1つめの端点
        v ← eの2つめの端点

        if ds.findSet(u) ≠ ds.findSet(v):
            ds.unite(u, v)
            MST にe を追加する