查找无向图中的环
static int[][] M = { { 0, 1, 0, 0, 0, 0 },{ 1, 0, 1, 1, 0, 0 },{ 0, 1, 0, 1, 0, 0 }, { 0, 1, 1, 0, 1, 1 },{ 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0 } }; static int count=0;static int n=6;public static boolean findCircle(int[][] M, int i, int j) {boolean hasEdge=false;for (int t = 0; t < n; t++) {if (t != j) {if (M[i][t] == 2) {// find circle// print start vertexSystem.out.println(i + 1);// delete start vertex edagedeleteVertexAndEdge(M, i);// find a circlecount++;hasEdge=true;return true;} else if (M[i][t] == 1) {// visitM[i][t] = 2;hasEdge=true;if (findCircle(M, t, i)) {// if (isDelete(M, i)) {// find the start vertex of circlereturn false;}deleteVertexAndEdge(M, i);System.out.println(i + 1);return true;}}}}if(!hasEdge&&i<n-1&&M[i][j]==0){// if the i vertex is isloated vertex findCircle(M, i+1, 0);}return true;}// delete all edge of current vertexpublic static void deleteVertexAndEdge(int[][] M, int i) {for (int t = 0; t < n; t++) {M[t][i] = -1;M[i][t] = -1;}}public static boolean isDelete(int[][] M, int i) {for (int t = 0; t < n; t++) {if (M[t][i] != -1) {return false;}}return true;}