hdu1213(并查集模板)

题目链接: 点击打开链接
基础并查集,计算有多少区间。


 #include<stdio.h>
int v[1005];
int find(int x)//查找
{
    if(x!=v[x])
    {
       x=find(v[x]);
    }
     return x;
}
void make(int a,int b)//合并
{
    int x;
    int y;
    x=find(a);
    y=find(b);
    if(x<=y)
        v[y]=x;
    else
        v[x]=y;
}
int main()
{
    int n,m,t,i,a,b,count;
    scanf("%d",&t);
    while(t--)
    {

        scanf("%d%d",&n,&m);
        for(i=1;i<=n;i++)
            v[i]=i;
        for(i=1;i<=m;i++)
        {
            scanf("%d %d",&a,&b);
            make(a,b);
        }
        count=0;
        for(i=1;i<=n;i++)
            if(v[i]==i)
                count++;
            printf("%d\n",count);

    }
    return 0;


}

猜你喜欢

转载自blog.csdn.net/qq_16707047/article/details/39779055