如果您做法为 O(nn)O(n\sqrt{n})O(nn),可以在以下部分卡常:
先 DFS 出重心,只在重心位置统计答案,容易证明这是正确的。
第一次 DFS 时,按照 DFS 序重标号,改成非递归 DFS。
使用邻接表而不是 vector。
vector
在枚举 uuu 的子树 vvv 时,如果 (u,v)(u,v)(u,v) 需要断开但 vvv 子树内部不存在合法方案,直接 break。
break
如果 sizusiz_usizu 小于枚举的连通块大小,直接 continue。
continue