首页 > 其他 > 详细

UVA 10608

时间:2014-07-27 23:31:09      阅读:426      评论:0      收藏:0      [点我收藏+]

并查集简单题
#include <iostream>
#include <cstdio>
using namespace std;
#define max 30010
int f[max];
int getf(int k){
    while(k!=f[k]){
        k=f[k];
    }
    return k;
}
void combine(int a,int b){
    int roota=getf(a);
    int rootb=getf(b);
    if(roota>rootb)f[roota]=rootb;
    else if(roota<rootb)f[rootb]=roota;
}
int main(){
    int a,b,t,n,m;
    //freopen("test.txt","r",stdin);
    cin>>t;
    while (t--){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            f[i]=i;
        }
        for(int i=1;i<=m;i++){
            cin>>a>>b;
            combine(a,b);
        }
        int max1=0;
        int c=0;
        for(int i=1;i<=n;i++) {
            if(f[i]==i){
                for(int j=i;j<=n;j++){
                    if(getf(f[j])==i){c++;}
                }
            }
            if(c>max1)max1=c;
            c=0;
        }
        cout<<max1<<endl;
    }
    return 0;
}

UVA 10608,布布扣,bubuko.com

UVA 10608

原文:http://www.cnblogs.com/Mr-Xu-JH/p/3871959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!