package xj;
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner;
public class FindRing1 { static int T,D, B; static int map[][]; static boolean a[]; static boolean b[]; static int res[]; static int tail; static boolean flag;
public static void main(String[] args) throws FileNotFoundException { /* Scanner sc=new Scanner(System.in); */ Scanner sc = new Scanner(new File("src/FingRing1")); while (sc.hasNext()) { D = sc.nextInt(); B = sc.nextInt(); map = new int[D + 1][D + 1]; a = new boolean[D + 1]; b = new boolean[D + 1]; flag = false; for (int i = 0; i < B; i++) { int m = sc.nextInt(); int n = sc.nextInt(); map[m][n] = 1; a[m] = true; b[n] = true; } T++; for (int i = 1; i < D+1; i++) { if(flag){break;} if(a[i]&&b[i]){ res=new int[D+1];//记得初始化要写在这里 tail=1; res[0]=i; dfs(1,i); } } if(flag){ System.out.print("#"+T); for (int i = 0; i < tail-1; i++) { System.out.print(" "+res[i]); } System.out.println(); } else{System.out.println("#"+T+" "+"No Ring");} } }
private static void dfs(int step, int p) { if(step>D){return;} if(tail!=1&&res[tail-1]==res[0]){flag=true;return;} for (int i = 1; i < D+1; i++) { if(map[p][i]==1&&a[i]){ res[tail]=i; tail++; dfs(step+1,i); if(flag){return;}//记得判断 tail--; res[tail]=0; } } }
}
