Cod sursa(job #961212)

Utilizator primulDarie Sergiu primul Data 11 iunie 2013 19:35:03
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream>
#include<bitset>
 
#define NMAX 1005
 
using namespace std;
 
ifstream f("dusman.in");
ofstream g("dusman.out");
 
bitset <NMAX> a[NMAX];
bitset <NMAX> used;
int N,K,M,NumberSolutions;
int sol[NMAX];
 
void Read ( void )
{
    f>>N>>K>>M;
    for(int i(1) ; i <= M ; ++i )
    {
        int x,y;
        f>>x>>y;
        a[x][y]=true;
        a[y][x]=true;
    }
 f.close();
}
 
void Write ( void )
{
    for(int i(1) ; i <= N ; ++i )
        g<<sol[i]<<" ";
    g.close();
}
 
void Bkt( int number )
{
    if( number == N+1 )
    {
        ++NumberSolutions;
        if( NumberSolutions == K )
        {
            Write();
            exit(0);
        }
    }
    else
    {
        for(int i(1) ; i <=  N ; ++i )
        {
            if( !used[i] && !a[sol[number-1]][i] && !a[i][sol[number-1]] )
            {
                sol[number]=i;
                used[i]=true;
                Bkt(number+1);
                used[i]=false;
            }
        }
    }
     
}
void Solve ( void )
{
    Bkt(1);
}
int main ( void )
{
    Read();
    Solve();
    return 0;
}