5.C++实现并查集模板

其他经典算法: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);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41562704/article/details/86487020
今日推荐