Pagini recente » Cod sursa (job #677353) | Cod sursa (job #2536329) | Cod sursa (job #2119226) | Cod sursa (job #1022738) | Cod sursa (job #1195069)
#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
#define pb push_back
using namespace std;
int Max,poz,n,nr,i;
vector<int>v[100001];
int viz[100001];
queue<int>q;
void BFS(int nod)
{
q.push(nod);
viz[nod]=1;
while (!q.empty())
{
nod=q.front();
q.pop();
vector<int>::iterator it;
for (it=v[nod].begin();it!=v[nod].end();++it)
{
if (viz[*it]==0)
{
viz[*it]=viz[nod]+1;
q.push(*it);
if (viz[*it]>Max) {Max=viz[*it],poz=*it;}
}
}
}
}
void DFS(int nod)
{
viz[nod]=1;
vector<int>::iterator it;
for (it=v[nod].begin();it!=v[nod].end();++it)
{
if (viz[*it]==0)
{
++nr;
if (nr>Max) Max=nr;
DFS(*it);
--nr;
}
}
}
int main()
{
int x,y;
freopen("darb.in","r",stdin);
freopen("darb.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i)
{
scanf("%d%d",&x,&y);
v[x].pb(y);
v[y].pb(x);
}
BFS(1);
memset(viz,0,sizeof(viz));
nr=1;
Max=0;
DFS(poz);
printf("%d\n",Max);
return 0;
}