并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。
并查集的时间复杂度O(N)。
并查集由一个整数型的数组和两个函数构成。数组a[]记录了每个点的前导点是什么,函数find是查找,join是合并。
int a[100000];
函数find()
顾名思义find函数就是查找,想知道两个集合是否有相同的元素,只能一级一级的查找
查找元素所在的集合,即根节点并判断两个元素是否属于同一集合。
int find(int x) //查找根节点
{
int r = x;
while (a[r] != r)
r = a[r];
int i = x;
int j;
while(i != r)
{
j = a[i];
a[i]= r ;
i = j;
}
return r ;
}
函数join()
将两个元素所在