首先先跑一遍树链剖分,求出每个点的 dfn
开桶,记录点权为 kkk 的 dfn
给每个桶排序
然后把这题转换成 a,ba,ba,b 路径上是否有点权为 kkk 的点
然后运用树链剖分求 LCA 的思想,因为每个点到其 top 的 dfn 为一段连续区间 [L,R][L,R][L,R],所以在 kkk 桶中二分第一个比 LLL 大于等于的点,如果那个点比 RRR 小,说明有
时间复杂度 O(nlog2n)O\left(n\log^2n\right)O(nlog2n)