并查集--判断图的连通性--模板

并查集--判断图的连通性;

1.图连通,其连通分量一定不大于1;

2.并查集模板;

int n,m;
int father[N];
int Find(int x){
    if(father[x]==-1)
        return x;
    return father[x]=Find(father[x]);
}
void Union(int x,int y){
    x=Find(x);
    y=Find(y);
    if(x!=y)
        father[x]=y;
}
int main(){
    memset(father,-1,sizeof(father));
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        int x,y;
        scanf("%d%d",&x,&y);
        Union(x,y);
    }
    int cnt=0;//记录连通分量
    for(int i=1;i<=n;i++)
        if(Find(i)==i)
            cnt++;
    printf("%d\n",cnt);
    return 0;
}

 

你可能感兴趣的:(#,常用模板代码,#,新算法)