查并集的实现有查找,合并和集合,最主要的是findFather函数的调用
#include <iostream>
using namespace std;class array
{
private:
const int maxn=100;
int n;
int father[maxn];
public:
array(int num)
{
n=num;
for(int i=0;i<n;i++)
{
father[i]=i;
}
}
int findFather(int x)
{
if(father[x]==x) return x;
else return findFather(father[x]);
}
void unions(int a,int b)
{
int faA=findFather(a);
int faB=findFather(b);
while(faA!=faB)
{
father[faA]=faB;
}
}
int findFathers(int x)//改进版的查找
{
if (x==father[x]) return x;
else
{
int F=findFathers(father[x]);
father[x]=F;
return F;
}
}
};