HDU 2181哈密顿绕行世界问题 (简单DFS)

来源:互联网 发布:兖州区网络问政平台 编辑:程序博客网 时间:2024/05/16 07:36

  哈密顿绕行世界问题

 HDU - 2181 





#include<cstdio>int a[20+2][3+1];int path[20+2];int flag; int m;void dfs(int t,int count){if(t==m && count==20){path[count]=m;printf("%d:  %d",flag++,path[0]);for(int i=1;i<21;i++)printf(" %d",path[i]);printf("\n");return ;}for(int i=0;i<count;i++)if(t==path[i])return;  //如果出现过不能再出现 path[count]=t;for(int i=0;i<3;i++)dfs(a[t][i],count+1);}int main(){for(int i=1;i<=20;i++)scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);while(scanf("%d",&m)==1 && m){flag=1;path[0]=m;for(int i=0;i<3;i++){dfs(a[m][i],1);}}return 0;}



1 0
原创粉丝点击