题解:P10238 [yLCPC2024] F. PANDORA PARADOXXX
删边过程十分地不好搞,考虑先加没被删过的边,再从后往前将删过的边一条一条加回去,在加边的过程中动态维护答案。每次加边合并两棵树
我们容易发现,有很多点对
证明(好像其他题解都没说明白):
引理:到任意点距离最远的点必是树的一条直径的端点。
证明:
设一棵树根为
r ,直径为x 到y 的路径,距离r 最远的一个节点是z ,x 到y 的 LCA 为l 。不妨设dis(r,x)\le dis(r,y) 。反证法,如果dis(r,y)<dis(r,z) :则
dis(l,y)\le dis(r,y)<dis(r,z) ,将直径中的y 换成z 一定更优,x 到y 的路径不是直径,矛盾,原命题成立。
- 如果合并后树的直径在树
s 内,则一定是x 到y 的路径。- 如果合并后树的直径在树
t 内,则一定是p 到q 的路径。- 否则直径经过连接树
s 和树t 的边,由引理,新树直径端点必为x,y,p,q 四点之二。综上,证毕。
用并查集合并,求距离可以用 LCA+树上差分。