Expm 9_1 有向图中环的判断问题

Posted 薰衣草

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Expm 9_1 有向图中环的判断问题相关的知识,希望对你有一定的参考价值。

 

【问题描述】

给定一个有向图,要求使用深度优先搜索策略,判断图中是否存在环。

 

技术分享图片
 1 package org.xiu68.exp.exp9;
 2 
 3 public class Exp9_1 {
 4 
 5     //用深度优先搜索判断图中是否存在环
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         int[][] graph=new int[][]{
 9             {0,1,1,0},
10             {0,0,0,1},
11             {0,0,0,1},
12             {0,0,0,0}
13         };
14         checkCircle(graph,4);
15         
16         int[][] graph1=new int[][]{
17             {0,1,1,0},
18             {0,0,0,1},
19             {0,0,0,1},
20             {1,0,0,0}
21         };
22         checkCircle(graph1,4);
23     }
24     
25     public static void checkCircle(int[][] graph,int vexNum){
26         //boolean[] visited=new boolean[vex.length];
27         
28         //每一个结点有3种状态,若为-1,则表示没访问过,若为0,则表示其后代结点正在被访问中
29         //若为1表示结点已经访问完成
30         int[] color=new int[vexNum];
31         for(int i=0;i<color.length;i++)
32             color[i]=-1;
33         DFS(graph,0,color);
34         
35     }
36     
37     public static void DFS(int[][]    graph,int v,int[] color){
38         if(color[v]==0){                       //存在环
39             System.out.println("图中存在环");
40             return;
41         }else if(color[v]==-1){            //没搜索到该结点
42             color[v]=0;                    //记录为正在搜索中
43             for(int i=0;i<color.length;i++){
44                 if(graph[v][i]==1)
45                     DFS(graph,i,color);
46             }
47             color[v]=1;                    //结点v搜索完毕
48         }
49     }
50     
51 }
View Code

 

以上是关于Expm 9_1 有向图中环的判断问题的主要内容,如果未能解决你的问题,请参考以下文章

Expm 9_3 无向图的双连通分量问题

拓扑排序,判断有向图中是否有环

Expm 8_1 区间划分问题

Expm 7_1树中的最大独立集问题

Codeforces Round Edu 36

Expm 7_2区间调度问题