Disjoint Set Union(Union-Find/素集合データ構造)

集合の併合と同一集合判定を高速に行います。

一般にはDisjoint Set UnionまたはUnion-Findと呼ばれます。このページはatcoder/dsuの日本語facadeを説明します。

import

import atcoder/extra/ja/structure/素集合データ構造

使用例

var dsu = 素集合データ構造を初期化(6)discard dsu.併合(0, 1)discard dsu.併合(1, 2)doAssert dsu.同じ集合か(0, 2)echo dsu.代表元(0)echo dsu.集合の大きさ(0)echo dsu.集合一覧()

API対応表

日本語API 元のAPI
素集合データ構造 DSU
素集合データ構造を初期化 initDSU
併合 merge
同じ集合か same
代表元 leader
集合の大きさ size
集合一覧 groups

基本操作は償却

[ O(\alpha(n)) ]

です。集合一覧は (O(n)) です。

このライブラリが使える問題

問題例を表示する(解法のネタバレを含む可能性があります)