圆方树/仙人掌树 学习笔记
圆方树
圆方树最初是处理「仙人掌图」(每条边在不超过一个简单环中的无向图)的一种工具,不过发掘它的更多性质,有时我们可以在一般无向图上使用它。
在圆方树中,原来的每个点对应一个 圆点,每一个点双对应一个 方点。
共有 \(n+x\) 个点,\(n\) 个圆点,\(x\) 个方点,其中 \(x\) 是点双连通分量的数量。
计算 \(\text{dfn,low}\) 可以使用 \(\text{Tarjan}\) 算法。
如何建树
对于每个点双连通分量,我们新建一个方点,对于点数连通分量中的每一个点,与其连边。最后重构图即可。
例题:
考虑建立圆方树。
我们发现,本题等价于求两点到 \(\text{LCA}\) 的距离。但怎么设置边权?
对于每个点,我们求出他到方点的父亲的距离作为边权即可。
还是建立圆方树,用数据结构维护路径最小值。
但是更改太多了,我们可以维护每一个方点的儿子中,点权的最小值。维护只需要对于每个方点开 \(\text{multiset}\) 即可。

浙公网安备 33010602011771号