仙人掌 & 圆方树

reference


一、定义

  • 仙人掌:每条边在不超过一个简单环中的连通无向图。换句话说,由简单环和树组成的图。

  • 圆方树:

    • 狭义圆方树(用于仙人掌):点双连通分量为方点,原图点为圆点,但是不考虑为割边的点双。

    • 广义圆方树(用于一般图):点双连通分量为方点,原图点为圆点,割边点双也要算。


二、题目

一般来说,仙人掌题目有两种处理方法:dfs 树 or 圆方树。

实现注意事项:建了圆方树后数组大小开两倍。

dfs 树:

  • P4129 [SHOI2006] 仙人掌:判定仙人掌图与求仙人掌中的环。前者可用树上差分判断树边覆盖数 + dfs 判断连通解决,后者可在 Tarjan 途中顺便求出。

  • P4244 [SHOI2008] 仙人掌图 II:仙人掌图直径问题。可以在 Tarjan 途中对每一个点双连通分量做环形 DP 解决(形如割边的点双也可以看作环嘛)。

  • P4410 [HNOI2009] 无归岛:仙人掌最大权独立集问题。由于是最大权独立集问题,也就是只关注相邻点的 DP,这里的环形 DP 是“强行断开+连接”型的。

圆方树:

  • P5236 【模板】静态仙人掌:仙人掌图最短路在线查询。建立圆方树,用树形结构可处理大部分距离,方点处特判。具体来说,同一个环上的两点距离是很容易求得的;圆点到方点的边权为圆点到该方点父亲(也是圆点)的环上最短距离,方点到其父亲圆点的边权为 0;若 LCA 时发现 LCA 是方点,则改为求与 LCA 两个子节点(圆点)的距离关系。

  • P4320 道路相遇:无向图中在线回答某路径必经点。建立圆方树即可。

  • Tourists:无向图中在线维护最小路径权。将方点分为“父亲圆点”“孩子圆点”两部分维护,是圆方树的基本思想之一。

  • P4630 [APIO2018] 铁人两项

posted @ 2023-12-12 16:44  David_Mercury  阅读(20)  评论(0编辑  收藏  举报