其中 d(a,b) 表示树上 a 到 b 的简单路径的边数。但是我们并不知道 E 的具体值,考虑构造辅助函数 g(x)=x-\frac{1}{n}\sum_i \min(d(i,b),1+x),它有两条性质:g(E)=0,且 g 是单调递增函数(考虑到函数 h(x)=\min(k,1+x) 的导数只可能有 0,1 两种取值,实际上,g'(x) 也是单调的)。
于是问题变为求 g 的零点,更进一步地,由于 d(i,b) 是整数,所以实际上只需要求出该零点的整数部分(即 \lfloor E \rfloor)。直接二分,问题变为给定 x 求 \sum_i \min(d(i,b),1+x),这等价于求有多少 i 满足 d(i,b)\le 1+x,且这样的 d(i,b) 的和是多少,这是经典邻域信息,可以用点分树维护,算上外层的二分总复杂度为 O(n\log^2 n + q)。