[Note] 直径与重心
[L4] 直径与重心
1. 生态位
-
识别:
-
最远/最长: 寻找树上任意两点间的最长简单路径(直径)。
-
平衡/分割: 寻找一个点,删除它后使得剩余的最大连通块节点数最小(重心)。
-
偏心距: 寻找一个点,使得它到树上最远点的距离最小(树的中心/半径)。
-
-
地位: 树的基本物理属性。
-
直径定义了树的“跨度”极限。
-
重心定义了树的“平衡”极限。
-
-
用途:
-
直径: 解决巡逻路径、最远点对查询、树网的核。
-
重心: 点分治 的前置核心,用于保证分治层数为 。
-
2. 逻辑支点
2.1 树的直径
-
核心性质:从树上任意一点 出发,能走到的最远节点 ,一定是直径的一个端点。
-
中心性质:树的几何中心(到最远点距离最小的点)一定位于直径的中点(或中点旁)。
-
求解策略:
-
两次 DFS/BFS: 适用于非负权边。方便求出具体路径。
- 第一次从任意点 找到最远点 (直径一端)。
- 第二次从 找到最远点 (直径另一端)。
-
树形 DP: 适用于含负权边。
- 维护 (最长链) 和 (次长链),且两条链不来自同一个子树。
- 。
-
2.2 树的重心
-
核心定义: 删除该点后,最大子树的大小 。
-
物理性质:
-
一棵树最多有两个重心,且这两个重心一定相邻。
-
树上所有点到重心的距离和最小。
-
把两棵树通过一条边连起来,新的重心在原两棵树重心的连线上。
-
-
单调移动:若删边则向重儿子移动
-
无权树: 如果向邻居 移动,当且仅当 时,重心在 的子树中。
-
带权树: 设总权值为 ,若邻居 的子树权值和 ,则加权重心一定在 的方向。
-
3. 实战部署
3.1 直径:两次 DFS 法 (求路径/端点)
1 | |
3.2 直径:树形 DP 法 (通用/负权)
1 | |
3.3 重心:DFS 求解
1 | |
4. 知识关联
-
关联笔记:
-
[[树形DP体系]]: 直径的 DP 写法本质就是树形 DP 的入门题。
-
[[点分治]]: 重心是点分治算法保证时间复杂度的核心(每次分割规模减半)。
-
-
实战案例 (直径体系):
-
骨架构造: CF911F Tree Destruction (利用直径端点距离最大进行贪心删点)。
-
几何中心: P5536 核心城市 (直径中点为根,长链剖分贪心)。
-
偏心距: P1099 树网的核 (直径上的双指针与分支最值)。
-
负权直径: P3629 巡逻 (环路边权取反,DP 求第二次直径)。
-
-
实战案例 (重心体系):
-
性质定义: P1395 会议 (距离和最小点)。
-
结构调整: CF1406C Link Cut Centroids (双重心化单重心的构造)。
-
动态/带权: P5666 树的重心 / P2726 树的双中心 (利用倍增在重链上寻找重心分割点)。
-