Cod sursa(job #116689)

Utilizator anaidaanaida anaida Data 19 decembrie 2007 12:16:52
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream.h>
ifstream f("dusman.in");
ofstream g("dusman.out");
typedef int stiva[1000];
stiva st;
int a[3000][2],nr,este,n,k1,m;
 void citire()
 {
 	f>>n>>k1>>m;
 	for(int i=1;i<=m;i++)
   		 f>>a[i][1]>>a[i][2];
 	f.close();
 }

 void init(int k)
 {
	st[k]=0;
 }

 int succesor(int k)
 {
	if(st[k]<n)
		{
			st[k]++;
			 return 1;
		 }
		else
			return 0;
 }

 int valid(int k)
 {
 	for(int i=1;i<=m;i++)
	if((st[k-1]==a[i][1]&&st[k]==a[i][2])||(st[k-1]==a[i][2]&&st[k]==a[i][1]))
		return 0;
 	for(i=1;i<k;i++)
		if(st[i]==st[k])
			return 0;
	 return 1;
 }

 int solutie(int k)
 {
	return k==n;
 }
 void tipar(int &nr)
 {
 	nr++;
	if(nr==k1)
		{
			for(int i=1;i<=n;i++)g<<st[i]<<" ";
			este=1;
			g.close();
		}
 }
 void back(int k)
 {init(k);
	while(succesor(k)&&!este)
		if(valid(k))
			if(solutie(k))tipar(nr);
				else back(k+1);
 }

int main()
{
	citire();
	back(1);

 return 0;
 }