uva10608

来源:互联网 发布:java连接ssh上传文件 编辑:程序博客网 时间:2024/05/16 23:41

题意:一个市镇有N个居民。已知有若干对是朋友,根据著名的说法“我的朋友的朋友也是我的朋友“,可以推导出如果A和B是朋友,并且B和C是朋友,则A和C是朋友。请你计算在最大的朋友团体中有多少人。

思路:典型的并查集,没什么好说的。

#include<iostream>using namespace std;int f[30005],s[30005];int find(int x){return f[x]==x?x:f[x]=find(f[x]);}int main(){int t,n,m,i,x,y;cin>>t;while(t--){cin>>n>>m;int max=1;for(i=1;i<=n;i++){f[i]=i;s[i]=1;}for(i=0;i<m;i++){cin>>x>>y;x=find(x);y=find(y);if(x!=y){f[x]=y;s[y]+=s[x];max=(s[y]>max)?s[y]:max;}}cout<<max<<endl;}return 0;}


 

原创粉丝点击