#include <cstdio>
#include <cstdlib>
#include <map>
#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;
const int maxn=10010;
int N;
vector<int> G[maxn];
bool vis[maxn]={false};
int result[maxn];
int maxh=0,maxresult=0;
void DFS(int now,int lay)
{
if(vis[now]==true)return;
vis[now]=true;
lay++;
if(lay>maxh)
{
maxh=lay;
}
for(int i=0;i<G[now].size();i++)
{
if(vis[G[now][i]]==false)
{
DFS(G[now][i],lay);
}
}
}
int DFST(int x)
{
int num=1;
DFS(x,0);
for(int i=1;i<=N;i++)
{
if(vis[i]==false)
{
DFS(i,0);
num++;
}
}
return num;
}
int main()
{
bool flag=false;
scanf("%d",&N);
for(int i=1;i<=N-1;i++)
{
int id1,id2;
scanf("%d%d",&id1,&id2);
G[id1].push_back(id2);
G[id2].push_back(id1);
}
int c;
for(int i=1;i<=N;i++)
{
for(int i=1;i<=N;i++)
{
vis[i]=false;
}
maxh=0;
c=DFST(i);
if(c==1)
{
result[i]=maxh;
if(maxresult<maxh)
{
maxresult=maxh;
}
flag=true;
}
else break;
}
if(flag)
{
for(int i=0;i<=N;i++)
{
if(result[i]==maxresult)
{
printf("%d\n",i);
}
}
}
else
{
printf("Error: %d components\n",c);
}
system("pause");
return 0;
}
PAT甲1021. Deepest Root (25)
猜你喜欢
转载自blog.csdn.net/yhy489275918/article/details/80230268
今日推荐
周排行