博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【算法专题】仙人掌图问题
阅读量:5837 次
发布时间:2019-06-18

本文共 613 字,大约阅读时间需要 2 分钟。

【参考】

★WC2017-immortalCO Making Graph into Trees

【DFS树】

仙人掌图:每条边至多在一个环上的图。

仙人掌图中每个环相当于一个点双连通分量,那么用Tarjan算法处理dfs树。

对于树边(low[y]>dfn[x])直接处理,环边先忽略。

每个环只在其深度最小的点x处理,设深度最大的点为y,则找到(x,y)并进行处理(fa[y]≠x&&dfn[y]>dfn[x])。

例题: 求直径,建立DFS树,环上单调队列维护。

例题: 求最大独立集,建立DFS树,环上动态规划。

【圆方树】

原图每个点都是圆点,非环边直接相连。对于每个环,新建一个方点连接这个环的所有圆点(环边不连)。

建图方法同DFS树,在处理环的时候连接方点。取出一个环只要取出方点的所有邻点即可(按顺序)。

例题: 求多源最短路,建立圆方树,找LCA。

【点双】

对于无向连通图,对每个点双建立一个方点连向其中所有点并消除点双内部的连边,这样就是广义圆方树。

例如经典的旅行问题:询问带点权无向图中,两点间所有简单路径的最小权值。

两点间的简单路径并=两点间的唯一点双链。(如果存在一条其它路径到达,则与已有点双矛盾。)

所以建立广义圆方树后就是查询树链最小值的问题了。(每个方点的权=连接圆点的最小权)

 

转载于:https://www.cnblogs.com/onioncyc/p/8315835.html

你可能感兴趣的文章
终端安全求生指南(五)-——日志管理
查看>>
Nginx 使用 openssl 的自签名证书
查看>>
创业维艰、守成不易
查看>>
PHP环境安装套件:快速安装LAMP环境
查看>>
CSS3
查看>>
ul下的li浮动,如何是ul有li的高度
查看>>
C++ primer plus
查看>>
python mysqlDB
查看>>
UVALive 3942 Remember the Word Tire+DP
查看>>
从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录...
查看>>
被需求搞的一塌糊涂,怎么办?
查看>>
c_数据结构_队的实现
查看>>
jquery 选择器总结
查看>>
Qt设置背景图片
查看>>
【阿里云文档】常用文档整理
查看>>
java中的Volatile关键字
查看>>
前端自定义图标
查看>>
实验二
查看>>
独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
查看>>
MyBatis使用DEMO及cache的使用心得
查看>>