rt,刚才做点分治T了,我觉得是找重心的问题。
int get_wc(int u, int fa, int tot, int& wc)
{
if (st[u]) return 0;
int maxn = 0, sum = 0;
for (int i = 0; i < G[u].size(); i++)
{
int j = G[u][i].v;
if (j == fa) continue;
int h = get_wc(j, u, tot, wc);
maxn = max(maxn, h);
sum += h;
}
maxn = max(maxn, tot - sum);
minn[u] = maxn;
if (minn[u] < minn[wc]) wc = u;
return sum;
}
重心我是这样找的,但是我觉得复杂度是否是错的?因为它貌似会被菊花图或者链卡