用数组的下标存放集合元素,数组中所对应的值就是其根节点(它的双亲结点的)的下标。 在连接的时候采用直接往其root连接。 虽然是多叉树,但是对并查集中所需要处理的东西更加好处理。
#include<iostream>
using namespace std;//直接往根节点上连的情况。
#define N 10010
int root[N];
void ini()
{
int i;
for(i = 1;(root[i] = i) < N; ++i);//0号节点不要
}
void findset(int x)
{
if(root[x] != x)
root[x] = findset(root[x]);
return root[x];
}
void uni(int x,int y)
{
if(findset(x) != findset(y))
root(findset[x]) = findset[y];
}
int main()
{
return 0;
}