Cod sursa(job #117912)

Utilizator cos_minBondane Cosmin cos_min Data 22 decembrie 2007 19:08:03
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>
#include <fstream>
using namespace std;

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

int N, K, M, S=0;
int X[dim];
bool Sel[dim][dim], C[dim];

void Back(int);
void Write();

int main()
{
    int X1, X2;
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);
    
    scanf("%d%d%d", &N, &K, &M);
    
    X[0] = 0;
    
    for ( ; M > 0; M-- )
        scanf("%d%d", &X1, &X2), Sel[X1][X2] = Sel[X2][X1] = 1;
    
    Back(1);
}

void Back(int k)
{
     for ( int i = 1; i <= N; i++ )
     {
         X[k] = i;
         if ( !C[X[k]] && Sel[X[k-1]][X[k]] != 1 )
         {
              if ( k < N ) 
              {
                   C[X[k]] = 1;
                   Back(k+1);
                   C[X[k]] = 0;
              }
              else if ( k == N )
              {
                   S += 1;
                   if ( S == K ) Write();
              }
         }
     }
}

void Write()
{
     for ( int i = 1; i <= N; i++ )
         printf("%d ", X[i]);
      
     exit(0); 
}