zoukankan      html  css  js  c++  java
  • hdu1213依旧并查集。求集合的个数

    #include<iostream>
    #include<set>
    using namespace std;
    
    const int MAXN=1003;
    
    int u[MAXN];
    
    int find(int p)
    {
        if(p==u[p])
        {
            return u[p];
        }else
        {
            return u[p]=find(u[p]);
        }
    }
    void connect(int a,int b)
    {
        int f1=find(a);
        int f2=find(b);
        if(f1<f2)
        {
            u[f2]=f1;
        }else
        {
            u[f1]=f2;
        }
    }
    void init()
    {
        int i=0;
        for(i=0;i<=MAXN-1;i++)
        {
            u[i]=i;
        }
    }
    int main()
    {
        int T;
        cin>>T;
        while(T--)
        {
            set<int>s;
            int n,m;
            int i;
            init();
            cin>>n>>m;
            while(m--)
            {
                int n1,n2;
                cin>>n1>>n2;
                connect(n1,n2);
            }
            for(i=n;i>=1;i--)
            {
                s.insert(find(i));
            }
            cout<<s.size()<<endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    浅谈折半搜索
    NOIP PJ/CSP-J 题目选做
    SDN第五次上机作业
    SDN第四次上机作业
    SDN第三次上机作业
    SDN第二次上机作业
    必看
    关于tensor
    permute与transpose
    1823. 找出游戏的获胜者
  • 原文地址:https://www.cnblogs.com/cj695/p/2609630.html
Copyright © 2011-2022 走看看