HDU 2181 哈密顿绕行世界问题(二)
ne N 1005 #define MAXN 15 #define eps 1e-6 int a[25]; int vis[25]; int mat[25][25]; int m; int c; void dfs(int o,int n,int q) { a[n]=o; vis[o]=1; int i,j; for(i=0; i<3; i++) { int s=mat[o][i]; if(n==19 &&s==q) { printf("%d: ",++c); for(j=0; j<20; j++) { if(j!=20) printf("%d ",a[j]); else printf("%d",a[j]); } printf("%d\n",m); } if(!vis[s]) dfs(s,n+1,q); } vis[o]=0; } int main() { int i; for(i=1; i<=20; i++) scanf("%d%d%d",&mat[i][0],&mat[i][1],&mat[i][2]); while(scanf("%d",&m)&&m) { c=0; memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); dfs(m,0,m); } return 0; }