HDU2181:哈密顿绕行世界问题(DFS)(二)

2014-11-24 02:00:34 · 作者: · 浏览: 3
void dfs(int m,int len,int c) { int i,j; vis[m] = 1; ans[len] = m; for(i = 0; i<3; i++) { int t = map[m][i]; if(t == c && len == 19) { printf("%d: ",cas++); for(j = 0; j<20; j++) printf("%d ",ans[j]); printf("%d\n",c); } if(!vis[t]) dfs(t,len+1,c); } vis[m] = 0; } int main() { int i; for(i = 1; i<=20; i++) scanf("%d%d%d",&map[i][0],&map[i][1],&map[i][2]); while(~scanf("%d",&m),m) { memset(vis,0,sizeof(vis)); dfs(m,0,m); } return 0; }