[DFS] HDU 2181

来源:互联网 发布:windows经典桌面壁纸 编辑:程序博客网 时间:2024/06/05 20:53

暴力搜索出所有的路径


#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 );        }}