Cod sursa(job #206842)

Utilizator IrnukIrina Grosu Irnuk Data 10 septembrie 2008 00:08:07
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
/*dusman*/

#include<fstream.h>

int n,sol[1005],mu,z,m[1003][5],x,y,ok;

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

void afiseaza()
{
	int i;
	for(i=0;i<n;i++)
		fout<<sol[i]<<" ";
	fout<<'\n';
}
int valid(int k)
{
	int i;
	if(k>0)
	{
		for(i=1;i<=m[sol[k]][m[sol[k]][0]];i++)
			if(m[sol[k]][i]==sol[k-1])
				return 0;
	}

	for(i=0;i<k;i++)
		if(sol[i]==sol[k])
			return 0;

	return 1;
}

void back(int k)
{
	int i;
	for(i=1;i<=n&&ok==0;i++)
	{
		sol[k]=i;
		if(valid(k)==1)
			if(k==n-1)
			{
				z--;
				if(z==0)

				{	afiseaza();ok=1;}

			}
			else back(k+1);
	}
}
int main()
{
	int i;
	fin>>n>>z>>mu;

	for(i=0;i<mu;i++)
	{
		fin>>x>>y;
		m[x][++m[x][0]]=y;
		m[y][++m[y][0]]=x;
	}
	back(0);
	fout.close();
	return 0;
}