假设离节点 $i$ 距离为 $k$ 的点有 $d_i$ 个,则答案为 $\sum \binom{d_i}{k}$,则现在需要求出 $d_i$。
显然可以直接点分治做,给出一种不同于点分治依赖 $k$ 的大小的做法。
我们注意到每个节点的直接子节点数量都严格少于其父亲节点的直接子节点数量,说明树的高其实是非常小,约为 $O(\sqrt n)$ 的,所以只有 $k\le 2\sqrt n$ 时才有答案。
考虑树形 DP,$f_{u,d}$ 表示 $u$ 子树内距离为 $d$ 的节点个数,$g_{u,d}$ 表示不在 $u$ 子树内距离为 $d$ 的节点个数。
则有 $f_{u,d}=\sum\limits_{v\in son_u} dp_{v,d-1}$,$g_{u,d}=g_{fa_u,d-1}+f_{fa_u,d-1}-f_{u,d-2}$,时间复杂度 $O(nk)$,剪枝后可过,注意为了避免 MLE,需要用 vector 当 DP 数组。