Cod sursa(job #136309)

Utilizator TabaraTabara Mihai Tabara Data 15 februarie 2008 13:50:58
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>

#define in "dusman.in"
#define out "dusman.out"
#define NMAX 1001

int n, K, M;
int A[NMAX][NMAX];//A[i][j] = 1 daca i si j sunt dusmani !
int sel[NMAX], tata[NMAX];

void Dusman( int i );
void Write();

int main()
{
    freopen( in, "r", stdin );
    freopen( out, "w", stdout );
    
    scanf( "%d%d%d", &n, &K, &M );
    int i, j;
    for ( ; M > 0; M-- )
    {
        scanf( "%d%d", &i, &j );
        A[i][j] = A[j][i] = 1;
    }
    Dusman( 1 );    
    return 0;
}

void Write()
{
     int i;
     for ( i = 1; i <= n; ++i )
         printf( "%d ", tata[i] );
     printf( "\n" );
}

void Dusman( int i )
{
     if ( K < 0 ) return;
     if ( i > n )
     {
        K--;
        if ( K == 0 ) Write();
        return;
     }
     int j;
     for ( j = 1; j <= n; ++j )
     {
         if ( !sel[j] && !A[tata[i-1]][j] )
         {
              sel[j] = 1;
              tata[i] = j;
              Dusman( i + 1 );
              sel[j] = 0;
         }
     }
}