如果你写的是倍增 LCA,注意求 LCA 时第二阶段被求的两点同步倍增向上跳时,代码应为:
for(int i=lg;i>=0;--i) if(dp[x][i]!=dp[y][i]) x=dp[x][i],y=dp[y][i];
而不是:
for(int i=lg;i>=0;--i) if(dep[dp[x][i]]!=dep[dp[y][i]]) x=dp[x][i],y=dp[y][i];
估计也只有我会犯这么ruozhi的错误了。