暴力搜索出所有的路径
#include <cstring>
#include <iostream>
using namespace std;
int st;
int map[ 22 ][ 3 ];
bool vis[ 22 ];
int cas = 1;
int ans[ 22 ]; //输出
void output () {
printf ( "%d: ", cas++ );
for ( int i = 0; i < 20; ++i )
printf ( "%d ", ans[ i ] );
printf ( "%d\n", st );
}
//搜索所有可能的路径
void dfs ( int m, int len ) {
vis[ m ] = true;
ans[ len ] = m;
for ( int i = 0; i < 3; ++i ) {
int t = map[ m ][ i ];
if ( t == st && len == 19 )
output ();
if ( !vis[ t ] )
dfs ( t, len + 1 );
}
vis[ m ] = false;
}
int main () {
for ( int i = 1; i <= 20; ++i )
scanf ( "%d%d%d", &map[ i ][ 0 ], &map[ i ][ 1 ], &map[ i ][ 2 ] );
while ( ~scanf ( "%d", &st ) ) {
if ( st == 0 )
break;
memset ( vis, false, sizeof ( vis ) );
dfs ( st, 0 );
}
}