https://www.nowcoder.com/acm/contest/157/B
就是找1的最大个数的树枝
#include <iostream>
#include <cmath>
using namespace std;
int flag[100];//假设其为根节点,+1
int t[100];//作为并查集
int find(int x)
{
if(x==t[x])
return x;
else
return t[x]=find(t[x]);
}
void unit(int a,int b)
{
int aa=find(a);
int bb=find(b);
if(aa==bb)
return ;
else
t[aa]=bb;
}
void init(int n)
{
for(int i=1;i<=n;i++)
t[i]=i;
}
int main()
{
int n;
cin >> n;
init(n);//初始化
int a,b;
for(int i=1;i<=n-1;i++)
{
scanf("%d%d",&a,&b);
if(a==1 || b==1)
continue;
unit(a,b);
}
for(int i=2;i<=n;i++)
{
int temp=find(i);
flag[temp]++;
}
int ans=0;
for(int i=2;i<=n;i++)
ans=max(ans,flag[i]);
cout << ans << endl;
return 0;
}