如果你树链剖分,结果TLE了#13和#14,考虑下递归求节点子孩子数量的时候是不是先把sz数组赋值了才进行的dfs,如下。
for(int v : e[u]) { if(v == father) continue; sz[u] = sz[u] + sz[v];//这样是错的qwq! dfs(v, u); if(sz[son[u]] < sz[v]) { son[u] = v; } }
把赋值语句和dfs语句换一个位置就ac了,结果不知道为什么错误代码能ac这么多点,无语子。