有向图

判断环是否存在:

使用拓扑排序,如果n个点全部入队并出队,说明图是个DAG;如果没有完全入队,说明有环。因为有环的话,就会有点的入度一定不为0。

判断正/负环:

图的权值\(w \in (-\infty,0]\)或者\(w \in [0, +\infty)\)。可以对图求强连通分量(Tarjan),然后缩点。对于一个强连通分量,我们可以看其内部的边是否为全正/负,如果有正/负,说明存在正/负环。
图的权值\(w \in R\)。目前我只知道用SPFA。

无向图

判断是否有简单环

简单环的定义

如果点 \(u\)能够从一条不经过自己且不经过重复点的路径回到自己,那么这条路径就是一个简单环。

简单环判定:
  1. 使用Tarjan算法求边双连通分量,如果有点数大于等于3的,就说明存在环。
  2. 使用DFS/BFS求解,如果一个点能访问到已经访问过的点,那么有环。

方法2需要注意:不能经过重复边,不然会出错,详见这里

PS:貌似深搜不需要vis,但是加上还是个好习惯。

原文地址:http://www.cnblogs.com/zhangchenxin/p/16878073.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性