假设要最后的胜者是 $x$,那么 $x$ 子树(不包括 $x$)的所有人都投给 $x$,然后要求删除 $x$ 子树(不包括 $x$)后,每个人最多有 $size(x)-1$ 张票。可以在 $O(N)$ 时间内从底向上贪心匹配来检查是否满足。
注意到在大部分情况下,是否删除 $x$ 的子树并不影响。只要 $x$ 的子树不是一个菊花,那么在贪心的匹配中,$x$ 的子树中的点本来就能匹配完。
如果我们忽略掉要删除 $x$ 的子树,我们可以直接二分一个值 $k$,使得大小至少为 $k$ 的子树都满足条件。
现在的问题是可能有一些大小为 $k-1$ 的子树是菊花,并且也满足条件。相当于我们要把 $x$ 的 DP 值(实际上是贪心后剩余要匹配的点数)减去 $1$,然后如果确实改变了(而非本来就是 $0$)就继续改变 $x$ 的父亲,直到根。显然要判断的条件是 $x$ 到根的所有点的 DP 值都是正数且根的 DP 值为 $1$。
时间复杂度 $O(N\log N)$。