More is betterHDU - 1856
The first line of the input contains an integer n (0 ≤ n ≤ 100 000) - the number of direct friend-pairs. The following n lines each contains a pair of numbers A and B separated by a single space that suggests A and B are direct friends. (A ≠ B, 1 ≤ A, B ≤ 10000000)
Output
The output in one line contains exactly one integer equals to the maximum number of boys Mr Wang may keep.
Sample Input
4
1 2
3 4
5 6
1 6
4
1 2
3 4
5 6
7 8
Sample Output
4
2
题意:给定一些人的认识关系,判断认识人最多的人数是多少。
题解:看题是并查集的做法,加一个数组判断一下有多少认识即可,因为数据太大,用cin会TLE,并且初始化ans应该为1(考虑n==0的情况),或者初始化为1,在最后遍历判断。
AC代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn = 10000007;
int n,ans;
int fa[maxn];
int sum[maxn];
int fi(int x)
{
return x==fa[x]?x:fa[x]=fi(fa[x]);
}
void intc()
{
for(int i=1;i<=maxn;i++)
{
fa[i]=i;
sum[i]=1;
}
}
int main()
{
while(cin>>n)
{
intc();
ans=0;
for(int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
int x1=fi(x);
int y1=fi(y);
if(x1!=y1)
{
fa[x1]=y1;
sum[y1]+=sum[x1];
//ans=max(ans,sum[y1]);//这里如果初始化为0会WA掉。
}
}
for(int i=1;i<=maxn;i++)ans=max(ans,sum[i]);
cout<<ans<<endl;
}
return 0;
}