Union-Find データ構造では各頂点が自分の親を覚えて根を木の代表元に採用します.よくある実装では根の親ポインタは特に指すものがないので None にしたりグループのサイズを覚えたりしますが.ここに代表元を登録するようにすれば代表元を任意に選択できる Union-Find になります. enum Link { Parent(usize), Representative(usize), } struct UnionFind { link: Vec<Link>, } impl UnionFind { fn set_representative(&mut self, item: usize, …