其他经典算法:https://blog.csdn.net/qq_41562704/article/details/86441022
#include <iosteam>
using namespace std;
int father[1005],n;//记录每个节点的父亲节点,n指的是边的个数
int findfather(int x){
int a=x;
while(x!=father[x])
x=father[x];
while(a!=x){
int z=a;
a=father[a];
father[z]=x;
}
return x;
}
void Union(int a,int b){
int faa=findfather(a).fab=findfather(b);
father[fab]=faa;
}
int main(){
for(int i=0;i<1005;i++)
father[i]=i;
for(int i=0;i<n;i++){
int a,b;
scanf("%d %d",&a,&b);
Union(a,b);
}
}