hdu 1213

来源:互联网 发布:手机淘宝怎么借钱 编辑:程序博客网 时间:2024/05/21 17:06
#include<stdio.h>
int pre[1100];
int find(int n) {
    if(pre[n]!=n)
        return pre[n]=find(pre[n]);
    return pre[n];
}
int main(){
    int i,j,a,b,sum,f1,f2,n,m,t,h;
    scanf("%d",&t);
    while(t--) {
        scanf("%d%d",&n,&m);
        for(i=1;i<=n;i++)
            pre[i]=i;
        while(m--) {
            scanf("%d%d",&a,&b);
            f1=find(a);
            f2=find(b);
            if(f1!=f2)
                pre[f1]=f2;
        }
        sum=0;
        for(i=1;i<=n;i++) {
            h=0;
            for(j=1;j<=n;j++)
                if(i==find(j)) {//直接找到他的父节点
                    h=1;
                    pre[j]=-1;
                }
                if(h)
                    sum++;
        }
        printf("%d\n",sum);
    }
    return 0;
}
原创粉丝点击