HDOJ_1232 并查集 畅通工程

#include<stdio.h>
int bin[1001];
int find(int x)
{
    int t=x;
    while(bin[t]!=t)
        t=bin[t];
    return t;
}
void insert(int x,int y)
{
    int fx,fy;
    fx=find(x);
    fy=find(y);
    if(fx!=fy)
        bin[fx]=fy;
}
int main()
{
    int n,m,a,b,i,sum;
    while(scanf("%d",&n),n)
    {
        for(i=0;i<=n;++i)
            bin[i]=i;
        scanf("%d",&m);
        for(i=m;i>0;i--)
        {
            scanf("%d%d",&a,&b);
            insert(a,b);
        }
        sum=-1;
        for(i=1;i<=n;++i)
            if(bin[i]==i)
                sum++;
        printf("%d\n",sum);

    }
    return 0;
}
原文地址:https://www.cnblogs.com/zibuyu/p/2636821.html