/* 题意: n组边,问这些边所组成的一个连通图 里面最多可以有多少节点, 可以用并查集建图,d[x]存储节点个数
*/
#include<cstdio>
#include<cstring>#include<algorithm>
#define M 10000001
using namespace std;
int p[M],d[M];
int find(int x)
{
return x==p[x]?x:p[x]=find(p[x]);
}
int Union(int x,int y)
{
int px=find(x);
int py=find(y);
if(px!=py)
{
p[py] = px;
d[px] += d[py];
}
}
int init()
{
for(int i = 0; i <= M; i++)
{
p[i] = i;
d[i]=1;
}
}
int main()
{
int n,a,b,r=0;
while(scanf("%d",&n)==1)
{
init();
for(int i = 0; i < n; i++)
{
scanf("%d%d",&a,&b);
r=max(r,max(a,b));
Union(a,b);
}
int num = 0,ans=0;
for(int i = 1; i <= r; i++)
{
if(p[i]==i)
{
num=max(num,d[i]);
}
}
printf("%d\n",num);
}
return 0;
}

307

被折叠的 条评论
为什么被折叠?



