Pagini recente » Cod sursa (job #1478592) | Cod sursa (job #2031003) | Cod sursa (job #1476781) | Cod sursa (job #3260794) | Cod sursa (job #2195660)
#include <iostream>
#include<fstream>
using namespace std ;
ifstream f("darb.in") ;
ofstream g("darb.out") ;
long long a[10001][10001],n,v[100001],niv[100001],c[100001] ;
int dfs(int nod,int nr)
{
int i ;
v[nod]=1 ;
if(nr==n) return nod ;
else for(i=1;i<=n;i++) if(a[i][nod]==1&&v[i]==0) dfs(i,nr+1) ;
}
int bfs(int nod)
{
int prim=1,ultim=1,i,maxi=0 ;
niv[nod]=1 ;
c[prim]=nod ;
while(prim<=ultim)
{ int nc=c[prim] ;
for(i=1;i<=n;i++) if(a[i][nc]==1&&v[i]==0)
{
ultim++ ;
c[ultim]=i ;
niv[i]=niv[nc]+1 ;
v[i]=1 ;
}
prim++ ;
}
for(i=1;i<=n;i++) if(maxi<niv[i]) maxi=niv[i] ;
return maxi ;
}
int main()
{ int x,y,i ;
f>>n ;
for(i=1;i<=n-1;i++){f>>x>>y ;
a[x][y]=1 ;
a[y][x]=1 ;
}
x=dfs(1,1) ;
for(i=1;i<=n;i++) v[i]=0 ;
y=bfs(x) ;
g<<y ;
}