仙人掌问题(圆方树)

【算法简介】

仙人掌就是把树上多连了一些返祖边,构成了一些环

根据仙人掌这个名字我们也可以较为形象的感受到图的形态

具体的,仙人掌分为点仙人掌和边仙人掌,定义分别为点/边最多属于一个环

 

之所以把这样的图形单独拿出来处理,就是因为它和树较为类似,有一些好的性质(相较一般图)

我们常用的处理办法是建立圆方树后,把原图转换为一个树进行计算

 

圆方树建立方法:

我们称原来图上的点为圆点,对于一个点双,我们把这个环上的边断开,新建立一个方点,把这个点双内所有的圆形点与方点相连,这样就构成了一个圆方树

根据仙人掌的性质,我们可以得到没有两个方点相连,特别的,如果对于一般的无向图建立圆方树,那么新树的所有边都是圆点和方点之间的

在建立好这样一个树之后,我们常见的操作是在圆方树上dp,点分治等等

一般来说,可以先考虑在普通树上如何处理,再特殊考虑方点的特殊性即可

 

【例题1】求仙人掌的最大独立集 BZOJ 4316.小C的独立集

sol.

【例题2】求仙人掌直径 BZOJ1023. [SHOI2008]cactus仙人掌图

sol.

【例题3】仙人掌两点间的最短路 BZOJ2125. 最短路

sol.

 

广义圆方树

【例题4】带修改,求无向图中两点之间所有简单路径上的最小权值

sol.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值