一道dfs 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2181
#include<stdio.h>
#include<string.h>
int mp[25][5],m;
int vis[25],ans[25],cnt=1;
void dfs(int s, int len)
{
vis[s]=1;
ans[len]=s;
for(int i=0;i<3;i++)
{
int t=mp[s][i];
if(len == 19 && t==m)
{
printf("%d: ",cnt++);
for(int j=0;j<20;j++)
printf("%d ",ans[j]);
printf("%d\n",m);
}
if(!vis[t])
dfs(t,len+1);
}
vis[s]=0;
}
int main()
{
for(int i=1;i<=20;i++)
scanf("%d %d %d",&mp[i][0],&mp[i][1],&mp[i][2]);
while(scanf("%d",&m),m)
{
memset(vis,0,sizeof(vis));
dfs(m,0);
}
return 0;
}