Cod sursa(job #457987)

Utilizator cont_de_testeCont Teste cont_de_teste Data 22 mai 2010 15:25:19
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <bitset>
using namespace std;

const char FIN[] = "dusman.in";
const char FOU[] = "dusman.out";
const int MAX = 1005;

int sol[MAX];
bitset<MAX> A[MAX], X;
int N, K, M;

void afis()
{
    for (int i = 1; i <= N; ++i)
       printf("%d ", sol[i]);
}

void dusman( int k )
{
    if ( K < 0 ) return ;
    if ( k > N )
    {
       if ( --K == 0 ) afis();
       return ;
    }

    for (int i = 1; i <= N; ++i)
       if ( X[i] == 0 && A[ sol[k - 1] ][ i ] == 0 )
          sol[ k ] = i, X[i] = 1, dusman(k + 1), X[i] = 0;
}

int main()
{
    freopen(FIN, "r", stdin);
    freopen(FOU, "w", stdout);

    scanf("%d %d %d", &N, &K, &M);

    int x, y;

    for (int i = 1; i <= M; ++i)
       scanf("%d %d", &x, &y), A[x][y] = A[y][x] = 1;

    dusman(1);

    return 0;
}