NYOJ 42 一笔画问题
import java.util.Scanner; public class Main{//搜索-深搜超时 static boolean ok; static int m,n; public static void main(String[] args) { Scanner input=new Scanner(System.in); int N=input.nextInt(); while(N-->0){ n=input.nextInt(); m=input.nextInt(); boolean a[][]=new boolean[n+1][n+1]; ok=false; for(int i=0;i<m;i++){ int x=input.nextInt(); int y=input.nextInt(); a[x][y]=true; a[y][x]=true; } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(a[i][j]){ a[i][j]=false; a[j][i]=false; dfs(a,i,j,1); a[i][j]=true; a[j][i]=true; } } } if(ok==false){ System.out.println("No"); } } } private static void dfs(boolean[][] a, int i, int j, int k) { if(ok) return; if(k==m){ ok=true; System.out.println("Yes"); return; } for(int x=0;x<=n;x++){ if(a[j][x]){ a[j][x]=false; a[x][j]=false; dfs(a,j,x,k+1); a[j][x]=true; a[x][j]=true; } } } }