这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
2020-2021:teams:legal_string:jxm2001:基环树 [2021/07/16 22:03] jxm2001 |
2020-2021:teams:legal_string:jxm2001:基环树 [2021/07/17 09:26] (当前版本) jxm2001 [例题四] |
||
---|---|---|---|
行 278: | 行 278: | ||
$$ | $$ | ||
- | 考虑依次断开一条边,得到链后计算 $\max(d(u)+d(v)+\text{dis}(u,v))$,易知所有断边情况中的最小值就是直径的真实值。 | + | 考虑依次断开一条边,得到链后计算 $\max(d(u)+d(v)+\text{dis}(u,v))$ 得到生成树的直径,则所有断边情况中的最小值就是基环树的直径。 |
+ | |||
+ | 简短证明一下上述结论:首先任意断开一条环上的边可以得到一棵生成树,显然生成树的直径不小于基环树的直径。 | ||
+ | |||
+ | 事实上,取基环树直径的中点 $rt$,做 $rt$ 的最短路生成树,则最短路生成树的直径等于基环树的直径。证毕。 | ||
但这样时间复杂度是 $O(n^2)$,考虑优化。记环上的点分别为 $u_1,u_2\cdots u_m$,考虑先断开 $(u_1,u_m)$ 边,求出前缀 | 但这样时间复杂度是 $O(n^2)$,考虑优化。记环上的点分别为 $u_1,u_2\cdots u_m$,考虑先断开 $(u_1,u_m)$ 边,求出前缀 |