【题解】树网的核

Core树网的核

ECC(F) 一定和直径的两个端点有关。因为任意节点 x 的最远点一定是两个端点之一。

不妨设直径上的点 x 到直径两端的距离的较小值为 f_x , x 到非直径点的最大距离为 g_x。那么 f_x>=g_x,否则和直径的最大性矛盾。

现在我们对每个直径上的节点求出 g_x。容易发现两端点的贡献就是到左右端点的距离。然后发现,路径两端的节点l,r的贡献一定大于 g_x,x 不在路径上。

注意对于路径中间的节点t,有可能 g_t>max(f_l,f_r),因为 g_t<=f_t,f_t可能比两个端点大。

那么记录一个全局变量 res,每次取 res 和 l,r 贡献的最大值即可。

时间复杂度 O(n)。

posted @ 2021-04-30 12:32  仰望星空的蚂蚁  阅读(18)  评论(0)    收藏  举报  来源