判掉 $d\le 2$ 的情况,其中 $d=2$ 的情况如果 $u$ 存在叶子作为邻居,那么显然怪不会在这个点上刷出来,我们走到这个点可以使得答案取到 $3$。
拉出一条直径,对于一个点 $u$,找到距离它较远的一个直径端点 $t$,以 $t$ 为根将树拉起来,我们先让 $u$ 跳 $\lfloor\frac {d-1}{2}\rfloor$ 次父亲,即能安全跳的最大步数,在跳的过程中的任意时刻,我们发现了与怪的距离不再减小,说明怪在刚刚经过的点的子树内。根据直径的性质,此时我们的最优策略是走到 $t$ 再等死,并且我们可以证明答案的最小值不会在这种情况下取到。那么,假设 $u$ 已经跳了最大安全步数次父亲,我们此时有一个策略是,往回走一步,此时 $u$ 的子树恰好是我们确定的不会有怪的点集,之后我们可以走到整个子树内的深度最大的点去。还有一个策略是,我们仿照 $d=2$ 的思路,令 $u$ 的初始位置是 $p$,那么所有 $u$ 的子树,满足子树内距离 $p$ 最远的点的距离 $< d$ 的,都不可能刷怪,我们可以走到任意一个这样的子树内,走到深度最大的点。否则,任意一个满足子树内距离 $p$ 最远的点的距离 $\ge d$ 的,怪都可能在该子树内且与 $u$ 的距离仅为 $1$,所以我们根本不能往这种子树内走。容易证明上述的两种策略就可以取到答案了,我们要计算这两种策略的结果是简单的,模拟即可。