一、题目
翻译有点问题,重心应该是每个子树都小于等于 n / 2 n/2 n/2的点
二、解法
点数大于 n / 2 n/2 n/2的子树只有一个,枚举每个点的所有子树,找出这个子树内最大的子树,但是要求节点数小于 n / 2 n/2 n/2,这样我们就可以把它接在当前点上,然后用 s i z [ v ] − siz[v]- siz[v]−这个值判断是否小于 n / 2 n/2 n/2
设 d p [ u ] dp[u] dp[u]为这个值,可以用换根维护每个点为根的情况,先可以处理出 1 1 1点为根的状态,由于从 u u u换到 v v v的时候需要判断 d p [ u ] dp[u] dp[u]是否从 v v v处转移过来的,维护一个次小值和最小值的转移方向,然后就可以换根了,附上转移方程:
d p [ u ] = max { d p [ v ] s i z [ v ] > n