仙人掌学习笔记

今天大概学了一些仙人掌
emmmmmmmmmmm
感觉这东西思想不难,就是很能码,可能因为我码风比较长

仙人掌图指的是一个无向的连通图,其中任意一条边至多在一个环中
于是树其实就是一个不含环的,特殊的仙人掌图,仙人掌图就是一个特殊的无向图
仙人掌学习笔记

由于其特殊性质,许多在无向图上很棘手的,甚至是npc的问题在仙人掌图上就变得可做了

通常我们会用一个叫圆方树的东西处理关于仙人掌的问题
原图中每个环都是一个点双,我们找出这些环,然后开始建树
我们在tarjan找点双的时候已经建出了一个dfs树,对于每个环,我们定义他的父亲为这个环上在dfs树上层数最高的点
原图中的点为圆点,圆点与圆点之间的边按原图的连法连
对于原图中的环,我们建一个方点代表这个环,然后连向这个环上的所有点,边权为这个点走到这个环的父亲的最短路

然后就可以把图上的问题转到了树上
可以处理种种问题(当然和在树上的还是很不同的,复杂很多而且代码会长很多而且我都不会……)

学习资料