#include <cstdio> #include <iostream> #include <vector> #define N 101 using namespace std; int max(int a,int b){ if(a>b) return a; else return b; } int Visited[100000+1]={0}; int min0[100000+1]={0}; int min1[100000+1]={0}; vector<int> *AL; int fn(int v) { int i,j,r0,r1; vector <int> & k = AL[v]; r0=0; Visited[v] = 1; // printf("%d\n", v); for(i=0;i<k.size();i++) { j = k[i]; if(Visited[j]==0) { fn(j); r0=max(min1[j],min0[j])+1; if(min0[v]<r0) { min1[v]=min0[v]; min0[v]=r0; } else if(min1[v]<r0) min1[v]=r0; } } } int main() { int n,a,b; scanf("%d", &n); AL = new vector<int>[n+1]; for(int i=0;i<n-1;i++){ scanf("%d%d", &a,&b); AL[a].push_back(b); AL[b].push_back(a); } fn(1); a=0; for(int i=1;i<=n;i++){ // printf("%d %d %d\n",i, min1[i],min0[i] ); if(a<(min1[i]+min0[i])) a = (min1[i]+min0[i]); } printf("%d\n", a ); delete []AL; return 0; }