并查集算法
1.并查集算法的功能:
为什么要使用并查集算法,因为它可以快速支持两种操作:
1.查询两个元素是否属于同一集合
2.合并两个集合
2.并查集的原理与实现:
并查集最核心的就是”用树表示集合"
树——>集合
树根——>代表元素
树的结点——>元素
所使用的数据结构:
father数组
对于普通元素x, father[x]=父亲节点编号
对于根节点,father[r]=r
核心的三个操作:
MAKE_SET:把每个元素作为一个集合
for(int i=1;i<=n;i++) father[i]=i;
UNION:并集,将两个集合求并集
father[find(a)]=find(b);
FIND:找到一个集合的代表元素
if(father[x]!=x) father[x]=find(father[x]);
return father[x];