Cod sursa(job #408258)

Utilizator RoCkyRomila RoCky Data 2 martie 2010 22:16:16
Problema Dusman Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
std::ifstream in("dusman.in");
std::ofstream out("dusman.out");
int perm,n,d1[1000],d2[1000],p,x[1000];
void scrie()
{
	int i;
	for(i=1;i<=n;i++)
		out<<x[i]<<" ";
	out<<'\n';
}
bool verifica(int k)
{
	int i,j;
	for(i=0;i<p;i++)
		if(d1[i]==x[k])
			if(d2[i]==x[k-1])
				return false;
			else;
		else
		if(d2[i]==x[k])
			if(d1[i]==x[k-1])
				return false;
	for(i=1;i<k;i++)
		for(j=i+1;j<=k;j++)
			if(x[i]==x[j])
				return false;
	return true;
}
void back()
{	
	int k=1;
	x[k]=0;
	do
	{
		//out<<k<<'\n';
		if(x[k]<n)
		{
			x[k]++;
			if(verifica(k))
			{
				if(k==n)
				{
					//scrie();
					if(perm==1)
					{
						scrie();
						return ;
					}
					else 
						perm--;
				}
				else
				{
					k++;
					x[k]=0;
				}
			}
		}
		else
			k--;
	}
	while(k>0);
}
int main ()
{
	int i;
	in>>n>>perm>>p;
	for(i=0;i<p;i++)
		in>>d1[i]>>d2[i];
	back();
	//scrie();
	return 0;
}