动态维护直径 || 动态维护树上路径 || 涉及LCA点转序列 || 对欧拉环游序用数据结构维护:1192B

本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/132566345

https://www.luogu.com.cn/problem/CF1192B

对于直径的求法,常用dp或两次dfs,但如果要动态维护似乎都不太方面,那么可以维护树上路径最大值。

树上路径为:

depu+depv2×deplca(u,v)dep_u+dep_v-2\times dep_{lca(u,v)}

为方便求 lca(u,v)lca(u,v) ,可以直接化为树上欧拉环游序,任意 u,vu,v 中必有 lca(u,v)lca(u,v) ,而且 lca(u,v)lca(u,v) 必然为任意 u,vu,v 中最浅的点

在这里插入图片描述

然后直接拿个线段树维护即可

总结:

  1. 动态维护直径

  2. 动态维护树上路径

  3. 涉及LCA点转欧拉环游序

  4. 对欧拉环游序用数据结构维护