Cod sursa(job #155337)

Utilizator diannaDiaconu Diana dianna Data 11 martie 2008 21:16:09
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream.h>
ifstream f("dusman.in");
ofstream g("dusman.out");
int n,m,p,x[1000],k,v[1000],d[3][1000],nr;
void citire()
{int A,B;
 f>>n>>p>>m;
 for(int i=1;i<=m;i++)
 {	f>>A>>B;
	for(int j=0;j<3;j++)
		if(d[j][A]==0)
		{	d[j][A]=B;
			break;
		}
	for(j=0;j<3;j++)
		if(d[j][B]==0)
		{	d[j][B]=A;
			break;
		}
 }
}
void afisare()
{for(int i=1;i<=k;i++)
	g<<x[i]<<" ";
 g<<'\n';
}
int corect(int k)
{if(v[x[k]]==1)
	return 0;
 else
	if(k!=1)
		for(int i=0;i<3;i++)
			if(d[i][x[k]]==x[k-1])
				return 0;
 return 1;
}
void back()                      //
{k=1;
 x[k]=0;
 while(k>0)
 {	if(x[k]<n)
	{	x[k]++;
		if(corect(k))
		{	if(k==n)
			{	nr++;
				if(nr==p)
					afisare();
			}
			else
			{       v[x[k]]=1;
				k++;
				x[k]=0;
			}
		}
	}
	else
	{	k--;
		v[x[k]]=0;
	}
 }
}
int main()
{citire();
 back();
 return 0;
}