发现本题的正解需要在点分治的过程中准确地找到重心从而判断答案,而在【模板】点分治 1的题解区,大部分题解给出的是第二篇题解中一种基于错误的寻找重心方法的点分治的复杂度分析的点分治写法。
即如果开始时 dfs 以 1 为根,则在第二次寻找重心时,总点数使用的是以 1 为根时的子树 size,不难发现这仅会导致以第一层重心为新根时,寻找以 1 为根时的父亲的子树 的重心时出现问题。
(听不懂的话请移步上面的链接)
链接里给出了复杂度正确的证明,但这无法寻找到真正的重心,导致算法错误(样例三过不去)。
在此警示后人,使用点分治时若对重心的正确性有要求,请务必以重心为根重新 dfs 求 size。