码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-12-05 18:44:32      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:i++   generated   优先   ++   auto   visit   static   访问   pac   

 

【问题描述】

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

 

技术分享图片
 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 有向图中环的判断问题

标签:i++   generated   优先   ++   auto   visit   static   访问   pac   

原文地址:http://www.cnblogs.com/xiu68/p/7988584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!