题目:传送门
分析:从一个出发有三个选择不断遍历至回到原点,记录路径。。。。看了很多题解,就直接写还是不知道为什么它自己就按字典排序了(尴尬)
AC代码:
#include<iostream>
#include<cstring>
using namespace std;
int map[21][3];
bool vis[22]; //标记有没有走过
int ans[22];
int m,time;
void dfs(int step,int num){
ans[num]=step;
for(int i=0;i<3;i++){ //遍历一个城市接下来的三种情况
if(map[step][i]==m&&num==19){
cout<<time<<": ";
time++;
for(int j=0;j<=19;j++)
cout<<ans[j]<<" ";
cout<<m<<endl;
}
int t=map[step][i];
if(!vis[t]){
vis[t]=true;
dfs(t,num+1);
vis[t]=false;
}
}
}
int main(){
for(int i=1;i<=20;i++){
scanf("%d %d %d",&map[i][0],&map[i][1],&map[i][2]);
}
while(cin>>m&&m){
time=1;
memset(vis,false,sizeof(vis));
memset(ans,0,sizeof(ans));
vis[m]=true;
dfs(m,0);
}
}