欧拉序动态维护树直径

。_饼干妹妹 提交于 2019-12-01 06:18:16

 

https://zhuanlan.zhihu.com/p/84236967

https://www.cnblogs.com/TinyWong/p/11260601.html

 

一个月过去了,我还是没有学动态点分治...

欧拉序保存了每个节点进入和返回的情况,$n$ 个结点的树,欧拉序列长度为 $2n - 1$。

两个结点的LCA就是它们在欧拉序中出现的位置的区间中,深度最小的那个结点。

对于边权为正的树,上面定义中的深度也可以换成到根的距离。

对于修改一个边权,就是区间修改。这没啥好说的。

对于查询直径,一棵树的直径就是 $max_{u, v}{dis[u] + dis[v] - min(dis[p])}$,也就是一个区间的左右端点的距离之和减去区间之间的最小距离。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!