Cod sursa(job #787941)

Utilizator icb_mnStf Cic icb_mn Data 13 septembrie 2012 21:14:18
Problema Dusman Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<fstream>

using namespace std;

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

#define NMAX_n 1000
#define NMAX_d 3000

int n = 0, K = 0, m = 0,x[NMAX_n + 1] = {0},ordine = 0;
short ok = 0;

struct dusmanii
{
	int a;
	int b;
}dusmani[NMAX_d + 1];

inline int conditie(int k)
{
	
	for(int i = 1; i <= k; ++i)
	{
		if(i < k)
			if(x[i] == x[k])return 0;
		for(int j = 1; j <= m; ++j)
		{
			if(i < k)
				if((x[i] == dusmani[j].a && x[i + 1] == dusmani[j].b) ||(x[i + 1] == dusmani[j].a && x[i] == dusmani[j].b)) return 0;
		}
	}
	
	return 1;
}

void afiseaza()
{
	for(int i = 1; i <= n; ++i)
		g<<x[i]<<' ';

}

inline int back(int k)
{
	if(k > n && conditie(k) == 1)ordine++;
	else
	{
		for(int i = 1; i <= n; ++i)
		{
			x[k] = i;
			if(conditie(k) == 1)
				back(k + 1);
		}
	}
	if(ok == 0)
		if(ordine == K)
		{
			afiseaza();
			n = 0;
		}
}

int main()
{
	
	f>>n>>K>>m;
	
	for(int i = 1; i <= m; ++i)
		f>>dusmani[i].a>>dusmani[i].b;
	
	f.close();
	
	back(1);
	
	g.close();
	
	return 0;
}