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

hdu1213 并查集不压缩

时间:2017-01-18 09:44:26      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:union   title   stream   style   输入输出   main   span   put   class   

题意:题意:一个人请人吃饭,相互认识的朋友在一张桌子,相互认识的朋友的意思是如果A认识B,B认识C,那么A、B、C是朋友,对于每组输入输出桌子的张数。

Sample Input
2 5 3 1 2 2 3 4 5 5 1 2 5
 
Sample Output
2 4

 

代码:

#include<iostream>
#include<cstdio>
using namespace std;

int a[1005];

int Find(int k){
    if(a[k]!=k) a[k]=Find(a[k]);
    return a[k];
}

int Union(int aa,int bb){
    return a[aa]=bb;
}

int main(){
    int T,n,m,x,y;
    cin>>T;
    while(T--){
        int ans=0;
        cin>>n>>m;
        for(int i=1; i<=n; i++)
            a[i]=i;
        for(int i=1; i<=m; i++){
            cin>>x>>y;
            int p=Find(x);
            int q=Find(y);
            if(p!=q) Union(p,q);
        }
        for(int i=1; i<=n; i++)
            if(a[i]==i) ans++;
        cout<<ans<<endl;
    }
    return 0;
}

 

hdu1213 并查集不压缩

标签:union   title   stream   style   输入输出   main   span   put   class   

原文地址:http://www.cnblogs.com/a-clown/p/6295523.html

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