码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 10608

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

标签:os   io   for   c++   ios   a   简单   3   

并查集简单题
#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

标签:os   io   for   c++   ios   a   简单   3   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!