关于 Lca 的结论

给定一棵有 \(n\) 个节点树和 \(m\) 个点 \(a_1, a_2, \dots a_m\),求 \(Lca(a_1, a_2, \dots a_m)\),即这 \(m\) 个点的最近公共祖先。

结论1

求出每个点的 \(dfs\)\(dfn_x\) (任意一种均可),然后求出这 \(m\) 个点中 \(dfs\) 序最小的点 \(x\) 和最大的点 \(y\),答案为 \(u = Lca(x, y)\)

结论2

答案为 \(Lca(a_1, a_2), Lca(a_2, a_3) \dots Lca(a_{m - 1}, a_{m})\) 中深度最小的。

这个结论看起来没有用,但是当 \(a_1 \sim a_m\) 是一段连续的区间时就很有用了。

posted @ 2025-09-23 16:22  xiehanrui0817  阅读(13)  评论(0)    收藏  举报