Cod sursa(job #267251)

Utilizator drag0s93Mandu Dragos drag0s93 Data 26 februarie 2009 23:08:24
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>

#define IN "dusman.in","r",stdin
#define OUT "dusman.out","w",stdout

struct dusman{
	int x,y;
};

int n,k,m,s;
dusman v[3020];
int sol[1020];

void citire()
{
	freopen(IN);
	scanf("%d%d%d",&n,&k,&m);
	for(int i=1;i<=m;++i)
		scanf("%d%d",&v[i].x,&v[i].y);
}
int valid(int p,int nr)
{
	for(int i=1;i<=p;++i)
		if(sol[i]==nr)
			return 0;
	return 1;
}
void afisare()
{
	freopen(OUT);
	for(int i=1;i<=n;++i)
		printf("%d ",sol[i]);
	printf("\n");
}
void back(int p)
{
	if(p==n+1)
	{
		//for(int i=1;i<p;++i)
			//printf("%d ",sol[i]);
		//printf("\n");
		for(int i=1;i<p;++i)
			for(int j=1;j<=m;++j)
				if((v[j].x==sol[i] && v[j].y==sol[i+1]) || (v[j].x==sol[i+1] && sol[i]==v[j].y))
					return;
		++s;
		if(s==k)
			afisare();
		return;
	}
	for(int i=1;i<=n && s!=k;++i)
	{
		if(valid(p,i))
		{
			sol[p]=i;
			back(p+1);
		}
	}
}
int main()
{
	citire();
	back(1);
	return 0;
}