考虑使用 b 算法解决

问题就变成了:对于一个集合 $S$ ,我如何去寻找一个点 $p$ 使得

$$\min_{s \in S}w_{p}+w_{s}+dis_{p,s} \le \min_{s\in S,j\not \in S \wedge j \not = p}w_{s}+w_{j}+dis_{s,j}$$
我们称每个节点所属的集合为他的颜色

考虑启发式合并,对树上每一个点 $u$ 用一个 $set$ 维护子树内每种颜色的点的 $dis_{u,p}+w_{p}$ 的最小值,额外维护所有颜色中的最小值和次小值,启发式合并的同时统计每种颜色的答案即可

发现其实不用启发式合并,用类似树形dp的方式上下 dfs 即可