Cod sursa(job #116205)

Utilizator floringh06Florin Ghesu floringh06 Data 17 decembrie 2007 22:41:34
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <cstdio>
#include <cstdlib>

using namespace std;

#define FIN "dusman.in"
#define FOUT "dusman.out"
#define MAX_N 1005

int S[MAX_N];
int N, M, K;
int a, b, i;
unsigned char A[MAX_N][MAX_N];
int np;
int v[MAX_N];

    void note ()
    {
         if (np == K)
         {
                int i;
                for (i = 1; i <= N; ++i)
                    printf ("%d ", S[i]);
                exit (0);
         }
    }

    void doit (int p)
    {
         int i;
         for (i = 1; i <= N; ++i)
             if (!v[i] && A[i][S[p - 1]]!=1)
             {
                       S[p] = i;
                       v[i] = 1;
                       if (p == N) ++np;
                          else if (p < N) doit (p + 1);
                       if (np == K) 
                       {
                              note ();
                              return ;
                       }
                       v[i] = 0;
             }
    }

    int main ()
    {
        freopen (FIN, "r", stdin);
        freopen (FOUT, "w", stdout);
        
        scanf ("%d %d %d", &N, &K, &M);
        
        for (i = 1; i <= M; ++i)
        {
            scanf ("%d %d", &a, &b);
            A[a][b] = A[b][a] = 1;
        }
        
        doit (1);
        return 0;
    }