并查集
引入
并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵数表示一个集合,树中的节点表示对应集合中的元素
顾名思义,并查集支持两种操作
- 合并 ( m e r g e ) (merge) (merge):合并两个元素所属集合(合并对应的树)
- 查询 ( f i n d ) (find) (find):查询某个元素的所属集合(查询对应的树的根节点),这可以用于判断两个元素是否属于同一个集合
并查集在经过修改后可以支持单个元素的删除、移动;使用动态开点树还可以实现可持久化并查集
初始化
初始化时,每个节点都是一颗单独的树,所以直接将父亲指向自己
void init(){
for(int i=1;i<=n;i++)fa[i]=i;
return;
}