hdu 1232 畅通工程(并查集)

思路:并查集基本内容。

#include<stdio.h>
const int MAXN=1010;
int F[MAXN];
int find(int t)
{
    if(F[t]==-1) return t;
    return F[t]=find(F[t]);
}    
void bing(int a,int b)
{
    int t1=find(a);
    int t2=find(b);
    if(t1!=t2) F[t1]=t2;
}    
int main()
{
    int n,m;

    while(scanf("%d",&n),n)
    {
        scanf("%d",&m);
        for(int i=1;i<=n;i++) F[i]=-1;
        int a,b;
        while(m--)
        {
            scanf("%d%d",&a,&b);
            bing(a,b);
        }    
        int res=0;
        for(int i=1;i<=n;i++)
          if(F[i]==-1) res++;
        printf("%d\n",res-1);
    }    
    return 0;
}


你可能感兴趣的:(hdu 1232 畅通工程(并查集))