首页 > 其他 > 详细

D 题

时间:2014-07-27 23:22:29      阅读:451      评论:0      收藏:0      [点我收藏+]

题目大意:
找朋友,最好把朋友最多的一堆的人数输出

 

运用并查集,每次更新最大数即可;

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 #define N 300010
 6 int fa[N],a,b;
 7 int k[N];
 8 int getHead(int x)
 9 {
10     int a=x;
11     while(x!=fa[x]) x=fa[x];
12     fa[a]=x;
13     return x;
14 }
15 void Union(int x,int y)
16 {
17     int fa_x=getHead(x);
18     int fa_y=getHead(y);
19     if(fa_x!=fa_y)
20     {
21         fa[fa_y]=fa_x;
22         k[fa_x]+=k[fa_y];
23     }
24 }
25 int main()
26 {
27     int T,n,m;
28     cin>>T;
29     while(T--){
30 
31         cin>>n>>m;
32 
33         for(int i=1;i<=n;i++) fa[i]=i;
34         for(int i=1;i<=n;i++) k[i]=1;
35         for(int i=0;i<m;i++){
36             cin>>a>>b;
37             Union(a,b);
38         }
39         int maxn=k[1];
40         for(int i=2;i<=n;i++)
41         {
42             if(k[i]>maxn) maxn=k[i];
43             //cout<<k[i]<<‘ ‘;
44         }
45 
46         cout<<maxn<<endl;
47     }
48     return 0;
49 }

 

D 题,布布扣,bubuko.com

D 题

原文:http://www.cnblogs.com/CSU3901130321/p/3871994.html

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