哈密顿绕行世界问题 HDU 2181

来源:互联网 发布:vb tooltiptext 换行 编辑:程序博客网 时间:2024/05/21 22:53
dfs  题目http://acm.hdu.edu.cn/showproblem.php?pid=2181
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int G[30][30];int vis[30];int rr[30],count=1,s;void dfs(int m,int cnt){//cout<<m<<endl;vis[m]=1;rr[cnt]=m;if(cnt==19){if(G[m][s]){printf("%d:  ",count);    for(int i=0;i<20;i++){    printf("%d ",rr[i]);    }    count++;    printf("%d\n",s);    }return ;}for(int i=1;i<=20;i++){if(G[m][i]==1&&vis[i]==0){vis[i]=1;dfs(i,cnt+1);vis[i]=0;}}return ;}int main(){int m=1;int a,c,b;for(int i=1;i<=20;i++){  scanf("%d%d%d",&a,&b,&c);    G[i][a]=1;    G[a][i]=1;    G[i][b]=1;    G[b][i]=1;    G[i][c]=1;    G[c][i]=1;   }while(true){memset(vis,0,sizeof(vis));    scanf("%d",&s);    if(s==0){    break;    }    dfs(s,0);}return 0;}

0 0