import java.util.ArrayList;
public class TESTHUAN {
static private int[] visited = { 0, 0, 0, 0, 0, 0, 0 };//
7个节点,0为未访问
static private int[][] e = {
{ 0, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 1, 1, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0 }
};// 邻接矩阵,值大家任意改.
static ArrayList trace = new ArrayList();//
从出发节点到当前节点的轨迹
static boolean hasCycle = false;
public static void main(String[] args) {
findCycle(0);
if (!hasCycle)
System.out.println("No Cycle.");
}
static void findCycle(int v) // 递归DFS
{
if (visited[v] == 1) {
int j;
if ((j = trace.indexOf(v)) != -1) {
hasCycle = true;
System.out.print("Cycle:");
while (j < trace.size()) {
System.out.print(trace.get(j) + " ");
j++;
}
System.out.print("
");
return;
}
return;
}
visited[v] = 1;
trace.add(v);
for (int i = 0; i < 7; i++) {
if (e[v][i] == 1)
findCycle(i);
}
trace.remove(trace.size() - 1);
}
}