Pagini recente » Cod sursa (job #292831) | Cod sursa (job #138077) | Cod sursa (job #2231302) | Cod sursa (job #1551054) | Cod sursa (job #1094219)
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#define Nmax 100005
using namespace std;
vector <int> G[Nmax];
vector <int> ::iterator it;
queue <int> C;
int n,maxi,c1,c2,dis;
void citire(int &n)
{
int i,x,y;
freopen("darb.in","r",stdin);
freopen("darb.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n-1;++i)
{
scanf("%d %d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
}
void BFS(int nod,int &cap1,int &maxi)
{
int i,x,dmin[Nmax];
bool viz[Nmax];
for(i=1;i<=n;++i) {viz[i]=0;dmin[i]=0;}
viz[nod]=1;
C.push(nod);
maxi=0;dis=0;
while(!C.empty())
{
x=C.front();C.pop();
for(it=G[x].begin();it!=G[x].end();++it)
if (!viz[*it])
{
C.push(*it);
dmin[*it]=dmin[x]+1;
if (dmin[*it]>maxi) {maxi=dmin[*it];cap1=*it;}
viz[*it]=1;
}
}
}
int main()
{
citire(n);
BFS(1,c1,dis);
BFS(c1,c2,dis);
printf("%d",dis+1);
return 0;
}