ber,TLE我可以接受但是RE又是怎么了
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
vector<int> G[10010];
// dis[u] 表示根结点到 u 的距离;
// 能够到达的最远结点 mx_index
int mx_index, dis[10010];
void dfs(int u, int fa) {
// 更新能够走到的最远结点
if (dis[u] > dis[mx_index]) {
mx_index = u;
}
for (int i = 0; i < G[u].size(); i++) {
int v = G[u][i];
if (v != fa) {
// 更新到达 v 的距离
dis[v] = dis[u] + 1;
dfs(v, u);
}
}
}
int main() {
int n;
cin >> n;
for (int i = 1; i < n; i++) {
int u, v; cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
int first, second;
// 计算直径的一端
mx_index = 1;
dfs(1, 0); // 以 1 为根找最远的节点
first = mx_index; // 直径一端
// 计算直径的另一端
dis[first] = 0; // 以 first 为根再找一次
dfs(first, 0);
second = mx_index; // 直径另一端 second
// 输出直径长度
cout << dis[second] << endl;
return 0;
}
这种题还没过,我和个XX一样