为啥点分治的重心写成这样?
每次获取重心后,更新父亲结点的 size?
void getroot(int u, int fa) {
int mxs = 0;
sz[u] = 1;
for (int i = head[u]; i; i = e[i].next) {
int to = e[i].to;
if (to == fa || del[to]) continue;
getroot(to, u);
if (root != -1) return;
sz[u] += sz[to];
mxs = max(mxs, sz[to]);
}
mxs = max(mxs, sum - sz[u]);
if (mxs * 2 <= sum) {
root = u;
sz[fa] = sum - sz[u];
}
}