#include<bits/stdc++.h>
using namespace std;
int g[50][50],ans,use[25],n,v[25];
void dfs(int st,int cnt)
{
//printf("%d\n",cnt);
if(cnt==20&&st==n)
{
ans++;
printf("%d: ",ans);
v[20]=n;
for(int i=0;i<=20;i++)
printf(" %d",v[i]);
printf("\n");
return ;
}
for(int i=1;i<=20;i++)
{
if(g[st][i]==1&&use[i]==0)
{
v[cnt+1]=i;
use[i]=1;
dfs(i,cnt+1);
use[i]=0;
}
}
}
int main()
{
int i,a,b,c;
memset(g,0,sizeof(g));
for(i=1;i<=20;i++)
{
scanf("%d%d%d",&a,&b,&c);
g[i][a]=g[i][b]=g[i][c]=1;
}
while(~scanf("%d",&n))
{
ans=0;
if(n==0) break;
memset(use,0,sizeof(use));
v[0]=n;
dfs(n,0);
}
return 0;
}
hdu 2181 哈密顿绕行世界问题
最新推荐文章于 2022-10-15 15:46:06 发布