https://www.luogu.com.cn/record/109655966
刚开始 WA on #6,后来改成题解的写法也是 WA on #6
#include <bits/stdc++.h>
using namespace std;
namespace Milkcat {
typedef long long LL;
const int N = 1e6 + 5;
int n, k, u, v, top, p, fa[N], depth[N], qwq[N], dis[N];
vector<int> G[N];
void dfs1(int u, int fat) {
fa[u] = fat;
if (dis[u] > dis[p]) p = u;
for (int v : G[u])
if (v != fat) dis[v] = dis[u] + 1, dfs1(v, u);
}
int dfs2(int u, int fat, int dep) {
fa[u] = fat, qwq[u] = depth[u] = dep;
for (int v : G[u])
if (v != fa[u]) qwq[u] = max(qwq[u], dfs2(v, u, dep + 1));
return qwq[u];
}
int main() {
cin >> n >> k;
for (int i = 1; i < n; i ++)
cin >> u >> v, G[u].push_back(v), G[v].push_back(u);
dfs1(1, 0), top = p, dis[p] = 0, dis[top] = 1, dfs1(top, 0);
for (int i = 1; i <= (dis[p] + 1) / 2; i ++)
p = fa[p];
dfs2(p, 0, 0), qwq[n + 1] = -1;
for (int i = 1; i <= n; i ++)
qwq[i] -= depth[i];
sort(qwq + 1, qwq + n + 2, greater<int>());
cout << qwq[k + 1] + 1 << '\n';
return 0;
}
}
int main() {
return Milkcat::main();
}