版权声明:转载请注明出处。 https://blog.csdn.net/u014427196/article/details/41547775
http://acm.hdu.edu.cn/showproblem.php?pid=2181
dfs的应用
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <string.h>
#include <queue>
#include <sstream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
int m;
int p[25][5];
int res[30];
int vis[30];
int ca = 1;
void dfs(int m,int len,int c)
{
res[len] = m;
vis[m]=1;
for(int i=0;i<3;i++)
{
int temp = p[m][i];
if (temp == c && len ==19)
{
cout<<ca++<<": ";
for(int i=0;i<=19;i++)
cout<<res[i]<<" ";
cout<<c<<endl;
}
if (!vis[temp])
dfs(temp,len+1,c);
}
vis[m]=0;
}
int main ()
{
for(int i=1;i<=20;i++)
{
cin>>p[i][0];
cin>>p[i][1];
cin>>p[i][2];
}
while (cin>>m && m!=0)
{
memset(vis,0,sizeof(vis));
dfs (m,0,m);
}
return 0;
}
留言