Cod sursa(job #395609)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 13 februarie 2010 15:59:26
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <algorithm>
#include <bitset>
using namespace std;

#define DIM (1<<10)

int N, K, M;
int b[ DIM ], d[ DIM ][ DIM ];
bitset <DIM> f;

inline void back( const int &k ) {

    int i;

    if( !K )
        return;

    if( k == N+1 ) {

        if( --K == 0 )
            for( i = 1; i <= N; ++i )
                printf( "%d ", b[ i ] );

        return;
    }

    for( i = 1; i <= N; ++i )
        if( !f[ i ] && !d[ b[ k-1 ] ][ i ] ) {

            b[ k ] = i;
            f[ i ] = 1;
            back( k+1 );
            f[ i ] = 0;
        }
}

int main() {

    freopen( "dusman.in", "r", stdin );
    freopen( "dusman.out", "w", stdout );

    int i, x, y;

    scanf( "%d %d %d", &N, &K, &M );
    for( i = 0; i < M; ++i ) {

        scanf( "%d %d", &x, &y );
        d[ x ][ y ] = 1;
        d[ y ][ x ] = 1;
    }

    back( 1 );

    return 0;
}