[CTSC2017]网络
网络
题解
首先需要我们观察出一个结论,我们先连接的边的两个端点必然都在原树的直径上。
我们将直径这条链当作原树的"根"来看看,即所有点的子树都是相对直径的子树。
如果我们连接的两个点在直径上同一个点的子树内,那么显然我们原来最长的直径长度必然不会减小,也就是说我们的最大值不变。
如果它连接的两个点在直径的不同子树中,这是原本直径两端点的距离虽然减小了,却没有减到最小。
我们考虑将条边的端点移动到子树的根,也就是直径上的节点上,直径两端点的距离会继续减小,增大的是这两子树内节点的距离,但这个距离增大后仍然不会超过直径现在的距离,否则它就是直径了。
所以必然存在一组最优解是两个点都在原树的直径上。
考虑在这个结论的基础上怎么求答案。
显然,对于最远距离距离最短这个问题,我们可以考虑二分求解,那么我们现在就相当于需要判断我们二分出的 m i d mid

浙公网安备 33010602011771号