
并查集
并查集
本篇将介绍并查集算法
并查集是一种用于管理元素集合的数据结构
实现为一个森林,每一棵树代表一个集合,树中的节点代表一个元素
顾名思义,并查集一共分为两个操作
- 合并(union):合并两棵树的根节点,相当于将两个集合合并为一个
- 查询(find):查询某个元素所属的树的根节点
初始化
初始时,需要给每个元素建立一个自己的树
也就是将自己的父节点设为自己
1 | int fa[N] |
查询
循环向根节点爬,直到父节点指向自己的节点,当前节点就是根节点了
1 | int find(int x){ |
这里可以进行优化,当我们查询过一次之后,可以将查询的结果赋值给原来的节点,使其直接连向根节点
1 | int find(int x){ |
合并
合并两棵树,我们只需要将一个根节点连向另一个根节点即可
1 | int x1,x2 //假设x1,x2为各自集合(树)的根节点 |
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自MarkCup
评论 ()

