题解的代码是错误的,交上去会 WA on 4,具体错误如下:
int query(int u, int lca){
int ans = 0;
for (int k = logN - 1; k >= 0; k--)
if (dep[f[u][k]] >= dep[lca])
ans = max(ans, Max[u][k]);
return ans;
}
应改成
int query(int u, int lca){
int ans = 0;
for (int k = logN - 1; k >= 0; k--)
if (dep[f[u][k]] >= dep[lca])
ans = max(ans, Max[u][k]),u=f[u][k];
return ans;
}