UnionFind
UnionFindは、$ N個の頂点のある無向森に対して
頂点$ u, vを含む木を接続する
頂点$ vを含む木の根を求める
頂点$ vを含む木のサイズを求める
木の個数を求める
などの操作をだいたい$ O(\alpha(N))(ほぼ定数時間)でできるデータ構造
基本的な機能
連結クエリ・連結判定・連結成分・木の個数・木のサイズ・木の根
個数
サイズ。Friendという単語が出てくるときはUnionFindという俗説がある
応用的
根
サイズ
マージする順番を考える
実は上の問題よりも弱い
値を持つ
可換な半群を乗せることができる
マージテクを使うと、ならし$ O(\log N)でマージできる
切断
ある頂点を切り離す操作を$ O(1)程度ですることが要求される
典型
切断クエリは先読みして逆から見ると連結クエリ!
基本。切断クエリ
切断クエリ。平衡二分木でも解けるが、UnionFindでも解ける
#TODO 重み付きUnionFindとかのバリエーションについても書く