代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int n,m,cnt;
struct Node{
int v,w,nxt;
}e[100009];
int h[100009],dis[100009],ans,sto;
void add_Node(int u,int v,int w){
e[++cnt].v=v;
e[cnt].w=w;
e[cnt].nxt=h[u];
h[u]=cnt;
}
int max(int a,int b){
return a>b?a:b;
}
void dfs(int x,int b){
if(dis[x]>ans){
ans=dis[x];
sto=x;
}
for(int i=h[x];~i;i=e[i].nxt){
int v=e[i].v;
if(v==b)continue;
dis[v]=dis[x]+e[i].w;
dfs(v,x);
}
}
int main(){
cin>>n;
memset(h,-1,sizeof(h));
int a,b;
for(int i=1;i<n;i++){
cin>>a>>b;
add_Node(a,b,1);
}
dis[1]=0;
dfs(1,0);
dis[sto]=0;
ans=0;
dfs(sto,0);
cout<<ans;
return 0;
}