输出有向图的环路(山债版)
来源:互联网 发布:数据挖掘入门书籍推荐 编辑:程序博客网 时间:2024/05/22 03:42
public class Node {
int vex;
Node next;
public Node(int i){
vex = i;
next = null;
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Circle {
static Node adjList[];
static int visited[];
static int path[];
static int qufen[];
static int num;
public static void main(String[] args) throws IOException{
Circle fas = new Circle();
BufferedReader br= new BufferedReader(
new InputStreamReader(System.in));
System.out.println("请输入结点个数:");
num = Integer.parseInt(br.readLine());
adjList =new Node[num];
for(int i=0;i<num;i++)
adjList[i] = new Node(0);
visited = new int[num];
qufen = new int [num];
path = new int[num*2];
for(int i=0;i<num;i++){
System.out.println("从结点 "+i+" 到:");
String line = br.readLine();
//System.out.print(line=="/br");
String svex[] = line.split(" ");
try{
for (int j =0;j<svex.length;j++){
int ivex = Integer.parseInt(svex[j]);
if(ivex>=num){
System.err.println("输入数字错误!");
System.exit(0);
}
Node vex = new Node(ivex);
Node itr = adjList[i];
while(itr.next!=null)
itr = itr.next;
itr.next = vex;
}
}catch(Exception e){
continue;
}
}
for (int i=0;i<num;i++){
fas.findCyclePath(i);
}
}
void findCyclePath(int begin){
findCyclesBeginWith(begin,begin,-1);
}
void findCyclesBeginWith(int begin,int cur,int len){
qufen[begin] = 1;//区分环的标志
visited[cur] = 1;//
len++;
path[len] = cur;
Node p = adjList[cur].next;
int v;
while(p!=null){
v = p.vex;
if(v == begin){
for(int k=0;k<=len;k++)
System.out.print(path[k]+" ");
System.out.println(begin);
}
if(visited[v]==0 && qufen[v]!=1)//环没有重复
findCyclesBeginWith(begin,v,len);
p = p.next;
}
visited[cur] = 0;
len--;
}
}
- 输出有向图的环路(山债版)
- 基于深度优先算法的有向图环路检测
- 有向图中打印所有的环路
- 有向图的最长路径及是否存在环路结构
- 判断无向图是否有环路的方法 -并查集 -BFS
- 看数据结构写代码(44) 判断无向图是否有环路
- 如何判断一个有向图中是否含有环路?
- 如何判断一个有向图中是否含有环路?
- 无向图求环路
- 图的环路问题
- 整数规划求解有向图最短路径问题环路解决方法
- 统计输出 图的环(c++ 有向加权图)
- 判断链表中是否有环路,以及求环路的入口点
- 有向图的创建(邻接矩阵)
- Matlab 有向有环图 所有回路非回路查询 最大环路查询
- 用邻接矩阵存储有向图 输出各点的出度和入度
- 用邻接矩阵存储有向图,并输出各顶点的出入和入度。
- 用邻接表存储有向图,并输出各顶点的出入和入度
- 姗姗迟来的2009年年终总结
- 传智播客--JBPM流程图详解总结
- C++ 初学者指南 第二篇(10)
- CE6内核启动过程-新角度
- Review C[To Be continue]
- 输出有向图的环路(山债版)
- 当Widget遇上MID
- vim补全(转载,谢谢原作者)
- VC拖动条分割窗口模拟
- JIVE 代码研究 开始篇
- VIM插件大全(转载.作者:滇狐)
- jsp页面判断是否安装插件
- 采用PHP实现”服务器推”技术的聊天室
- C++你也行