不知道哪里错了。
#include <bits/stdc++.h>
using namespace std;
#define MAXN 10001
int n, u, v, maxn, s1, ans;
struct Edge{
int v, w;
};
vector<Edge> e[MAXN];
int dis[MAXN];
void dfs(int x, int now){
if (dis[x] <= now) return;
dis[x] = now;
for (auto i: e[x]) dfs(i.v, i.w+now);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i=1; i<n; i++){
cin >> u >> v;
e[u].push_back({v, 1});
e[v].push_back({u, 1});
}
memset(dis, 0x3f, sizeof(dis));
dfs(1, 0);
for (int i=1; i<=n; i++){
if (maxn < dis[i]){
dis[i] = maxn;
s1 = i;
}
}
memset(dis, 0x3f, sizeof(dis));
dfs(s1, 0);
maxn = 0;
for (int i=1; i<=n; i++) maxn = max(maxn, dis[i]);
cout << maxn;
return 0;
}