死递归
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
vector<int> G[N];
int d[N],n,vis;
int dfs(int u,int f){
for(auto v:G[u]){
if(v==f) continue;
d[v]=d[u]+1;
if(d[v]>d[vis]) vis=v;
dfs(v,u);
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n;
for(int i=1;i<=n-1;i++){
int u,v;
cin>>u>>v;
G[u].emplace_back(v);
G[v].emplace_back(u);
}
dfs(1,0);
d[vis]=0;
dfs(vis,0);
cout<<d[vis];
}