正解复杂度为$O(n^2)$的题感觉越来越少了QwQ。
传送门
题解
首先比较显然的是断开的边一定是在直径上的。
所以可以枚举直径上断开的边,然后考虑怎样连边才能使之后的最远距离最小。
可以对断开边之后的两棵子树分别进行树形DP,求出每棵子树中与每个点距离最远的点的距离。
那么新连的边的两个端点必定为两棵子树中与该点的最远距离最小的点。
这样连边后的直径为两个端点的最远距离之和加上新连边的长度。
注意新的直径不能比两棵子树的直径小。
代码
写的又臭又长QwQ。
1 |
|
正解复杂度为$O(n^2)$的题感觉越来越少了QwQ。
首先比较显然的是断开的边一定是在直径上的。
所以可以枚举直径上断开的边,然后考虑怎样连边才能使之后的最远距离最小。
可以对断开边之后的两棵子树分别进行树形DP,求出每棵子树中与每个点距离最远的点的距离。
那么新连的边的两个端点必定为两棵子树中与该点的最远距离最小的点。
这样连边后的直径为两个端点的最远距离之和加上新连边的长度。
注意新的直径不能比两棵子树的直径小。
写的又臭又长QwQ。
1 | #include<cstdio> |