博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DFS判断有无环
阅读量:4215 次
发布时间:2019-05-26

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

原理 就是判断图是否具有反向边 DFS每个点都是有父节点延伸过来的,如果寻找某个子节点的临接点时候发现 除了父节点被标记外还有其它被标记的节点和其相连,则必然有环。

package Graph;import java.util.LinkedList;import java.util.List;import java.util.Scanner;public class HasCycle {	boolean []visit;	boolean isHasCycle = false;//初始为无环	LinkedList
[]map; int v, e; public static void main(String[] args) { new HasCycle().run(); } public void run() { Scanner in = new Scanner(System.in); v = in.nextInt(); e = in.nextInt(); map = new LinkedList[v]; visit = new boolean[v]; for(int i = 0; i < v; i++) { map[i] = new LinkedList<>(); } for(int i = 0; i < e; i++ ) { int a = in.nextInt(); int b = in.nextInt(); map[a].offer(b); map[b].offer(a); } dfs(0, 0); System.out.println(isHasCycle); } public void dfs(int cur, int parent) { visit[cur] = true; for(int i = 0; i < map[cur].size(); i++ ) { int w = map[cur].get(i); if(!visit[w]) { dfs(w, cur); } else if(w != parent) { isHasCycle = true; return; } } }}

转载地址:http://ulimi.baihongyu.com/

你可能感兴趣的文章
第二十八节:隧道代理阿布云代理
查看>>
Reverse Linked List II
查看>>
Vue过滤器、生命周期函数和vue-resource
查看>>
Linux(Ubuntu)安装Swift和Swiftlint
查看>>
未来有价值的开发语言
查看>>
bzoj:3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛
查看>>
JavaWeb——HttpSession
查看>>
Eureka 服务中心
查看>>
Lucene 4.9索引txt文件
查看>>
《剑指Offer》面试题5-替换空格
查看>>
HDU 6091 - Rikka with Match
查看>>
Facebook 发布深度学习工具包 PyTorch Hub,让论文复现变得更容易
查看>>
13个绚丽的Jquery 界面设计
查看>>
[转]VI命令详解
查看>>
js运动框架_包括图片的淡入淡出
查看>>
Ecshop 数据库操作方法getRow、getAll、getOne区别
查看>>
【KMP】OKR-Periods of Words
查看>>
JS 递归
查看>>
外网主机远程连接内网主机
查看>>
[NOIP模拟14]题解
查看>>