Cod sursa(job #954308)

Utilizator superman_01Avramescu Cristian superman_01 Data 28 mai 2013 21:36:38
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 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;
}