Cod sursa(job #788273)

Utilizator icb_mnStf Cic icb_mn Data 14 septembrie 2012 13:55:58
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 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,fr[NMAX_n + 1] = {0};
short ok = 1;

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


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

}

void back(int k)
{
	int i;
	if(K < 0)
		return;
	if(k > n)
	{
		K--;
		if(K == 0)
		{
			afiseaza();
			return;
		}
	}
	else
	{
		for(i = 1; i <= n && K > 0; ++i)
		{
			int ok1 = 0;
			x[k] = i;				
			fr[x[k]]++;
			
			if((dusmani[x[k]].a != 0 && dusmani[x[k - 1]].b !=0) || fr[i] > 1) ok1 = 1;
			if((dusmani[x[k]].b != 0 && dusmani[x[k - 1]].a != 0) || fr[i] > 1)ok1 = 1;
			
			if(ok1 == 0)
				back(k + 1);
			fr[i]--;
		}	
	}
}

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