Cod sursa(job #413364)

Utilizator yrarBogdan Ionut yrar Data 8 martie 2010 13:14:34
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;

void bkt(int k);
void afis();
int verif();

int f[1002], n, uz[1002], nr, p, m, a[1002][1002], q;

ifstream in("dusman.in");
ofstream out("dusman.out");

int main()
{
    int i, j;
    q=1;
    in >> n >> p >> m;
    while(!in.eof())
    { 
       in >> i >> j;
       a[i][j] = a[j][i] = 1;
    }
    bkt(1);
    return 0;
}

void bkt(int k)
{
     if(k-1==n)
     {  if(verif()) q=0;
     }
     else if(q)
       for(int i=1; i<=n; i++)
         if(!uz[i])
         { f[k]=i;
           uz[i]=1;
           bkt(k+1);
           uz[i]=0;
         }
}

void afis()
{
     for(int i=1; i<=n; i++)
       out << f[i] << " ";
     out << "\n";
} 

int verif()
{
     int ok=1;
     for(int i=1; i<=n-1; i++)
       if(a[f[i]][f[i+1]])
         ok=0;
     if(ok)
       ++nr;
     if(nr==p) { afis(); 
                 return 1;
               }
     return 0;
}