首先用换根找到满足以 xxx 为根时深度最大的节点最小的 xxx(如有多个则选任意一个)。将 xxx 设为第一个核心城市。
然后就从 xxx 开始拓展 k−1k-1k−1 次,每次拓展和核心城市距离差最大的一颗子树。
拓展完之后把最大距离差输出就可以了。
显然时可以做到 O(nlogn)O(n \log n)O(nlogn) 的。
求证明或证伪。