• hdu1856依旧并查集


    不过这个求的是最大集合的个数

    #include<iostream>
    #include<set>
    #include<cstdio>
    #include<vector>
    using namespace std;
    const int MAXN=10000005;
    const int MAXM=100005;
    
    int u[MAXN];
    int sum[MAXN];
    set<int>num;
    //bool seted[MAXN];
    int find(int p)
    {
        if(u[p]==p)
        {
           // seted[p]=1;
            return p;
        }else
        {
           // seted[p]=1;
            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;
        }
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            int max=1;
            int i=0;
            num.clear();
            vector<int>input[2];
            input[0].clear();
            input[1].clear();
            //memset(seted,0,sizeof(seted));
            for(i=0;i<=n-1;i++)
            {
                int num1,num2;
                scanf("%d%d",&num1,&num2);
                
                num.insert(num1);
                num.insert(num2);
                input[0].push_back(num1);
                input[1].push_back(num2);
            }
            set<int>::reverse_iterator cp=num.rbegin();
            for(cp=num.rbegin();cp!=num.rend();cp++)
            {
                u[*cp]=*cp;
                sum[*cp]=0;
            }
            //memset(sum,0,sizeof(sum));
            for(i=0;i<=n-1;i++)
            {
                connect(input[0][i],input[1][i]);
            }
            for(cp=num.rbegin();cp!=num.rend();cp++)
            {
                sum[find(*cp)]++;
            }
            for(cp=num.rbegin();cp!=num.rend();cp++)
            {
                if(sum[*cp]>max)
                {
                    max=sum[*cp];
                }
            }
            printf("%d\n",max);
        }
        return 0;
    }
    

      

  • 相关阅读:
    虚拟机
    10亿数中找出前1000大的数
    deepin云打印实现连接Windows打印机
    如何判断一个数是否在40亿个整数中?
    大三下学期第三周总结
    使用Jenkins构建、部署spring boot项目
    大三下学期第二周总结
    谷歌zxing 二维码生成工具
    Jbarcode 条形码生成工具
    kaptcha验证码实现,配合spring boot使用
  • 原文地址:https://www.cnblogs.com/cj695/p/2609608.html
Copyright © 2020-2023  润新知