zoukankan      html  css  js  c++  java
  • hdu1232最水并查集模版题

    求集合的个数

    #include <cstdlib>
    #include <iostream>
    #include<stdio.h>
    using namespace std;
    const int MAXN=1003;
    int p[MAXN];
    int find(int i)
    {
        if(p[i]!=i)
        {
            return p[i]=find(p[i]);
        }else
        {
            return i;
        }
    }
    void connect(int a,int b)
    {
        int f1=find(a);
        int f2=find(b);
        if(f1>f2)
        {
            p[f1]=f2;
        }else if(f1<f2)
        {
            p[f2]=f1;
        }
    }
    int main(int argc, char *argv[])
    {
        int n,m;
        while((cin>>n)&&(n!=0)&&(cin>>m))
        {
            int i=0;
            int sum=0;
            for(i=1;i<=n;i++)
            {
                p[i]=i;
            }
            for(i=0;i<=m-1;i++)
            {
                int a,b;
                scanf("%d%d",&a,&b);
                connect(a,b);
            }
    
            for(i=n;i>=1;i--)
            {
                if(find(i)==i)
                {
                    sum++;
                }
            }
            cout<<sum-1<<endl;
        }
        //system("PAUSE");
        return EXIT_SUCCESS;
    }
    

      

  • 相关阅读:
    @atcoder
    @loj
    @AGC037
    @uoj
    @uoj
    @loj
    @loj
    @loj
    @loj
    @loj
  • 原文地址:https://www.cnblogs.com/cj695/p/2609586.html
Copyright © 2011-2022 走看看