Cod sursa(job #120323)

Utilizator megabyteBarsan Paul megabyte Data 4 ianuarie 2008 22:22:57
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#define INF "dusman.in"
#define OUF "dusman.out"
#define NMAX 1024
using namespace std;

char a[NMAX][NMAX],v[NMAX]={0};
short n,m,pk,k,nf=1,sol[NMAX];

void dfs(short h)
{
	if(nf)
	{
		short i;
		for(i=1;i<=n&&nf;++i)
		if(!v[i]&&a[sol[h-1]][i])
		{
			v[i]=1;sol[h]=i;
			if(h==n)
			{ 
				++pk;
				if(pk==k) nf=0;		       
			}
			 else dfs(h+1);
			v[i]=0;
		}
	}
}

int main()
{
	short i,j,x,y;
	FILE *in,*out;
	in=fopen(INF,"r");
	out=fopen(OUF,"w");

	fscanf(in,"%hd%hd%hd",&n,&k,&m);
	for(i=0;i<=n;++i)
		for(j=0;j<=n;++j) a[i][j]=1;

	for(i=1;i<=m;++i)
	{
		fscanf(in,"%hd%hd",&x,&y);
		a[x][y]=a[y][x]=0;
	}

	sol[0]=0;pk=0;
	dfs(1);

	for(i=1;i<=n;++i) fprintf(out,"%hd ",sol[i]);

	fclose(in);fclose(out);
	return 0;
}