HDU 1213

来源:互联网 发布:dock软件iphone6s 编辑:程序博客网 时间:2024/05/21 06:19

#include<stdio.h>int father[1005],depth[1005];void init(){    int i;    for(i = 1; i < 1005;i ++)    {        father[i] = i;        depth[i] = 0;    }}int find(int x){    if(x==father[x])        return x;    else        return father[x] = find(father[x]);}void unit(int x,int y){    x = find(x);    y = find(y);    if(x==y)        return ;    if(depth[x]<depth[y])    {        father[x] = father[y];    }    else    {        if(depth[x]>depth[y])            father[y] = father[x];        else        {            father[x] = father[y];            depth[y]++;        }    }}int main(){    int T,n,m,gr,j,a,b;    scanf("%d",&T);    while(T--)    {        gr = 0;        init();        scanf("%d%d",&n,&m);        while(m--)        {            scanf("%d%d",&a,&b);            unit(a,b);        }        for(j = 1;j <= n;j ++)        {            if(j == father[j])                gr++;        }        printf("%d\n",gr);    }    return 0;}


0 0
原创粉丝点击