Cod sursa(job #473355)

Utilizator bugyBogdan Vlad bugy Data 29 iulie 2010 00:45:27
Problema Dusman Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define dim  1010
int n,k,K,T,x,y,v[dim],dusman[dim][dim],as,ev,i;

FILE *f=fopen("dusman.in","r"), *g=fopen("dusman.out","w");

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

int succesor()
{
v[k]=v[k]+1;
if(v[k]>n)
	return 0;
else return 1;
}

int valid()
{
	int i;
	for(i=1;i<k;i++)
		if(v[i]==v[k])
			return 0;
	if( dusman[ v[ k ] ][ v[ k-1 ] ]!=1  )
		return 1;
	else return 0;
}


int solutie()
{
	if(n==k)
		return 1;
	return 0;
}

void afisare()
{
	K--;
	if(K==0)
	{
	int i;
	for(i=1;i<=n;i++)
		fprintf(g,"%d ",v[i]);
	fprintf(g,"\n");
	fclose(g);
	exit(0);
	}

}


void bt()
{
k=1;
init();
while(k>0)
{
as=1; ev=0;
	while(as&&!ev)
	{
	as=succesor();
	if(as)
		ev=valid();	
	}
	if(as)
	{
		if(solutie())
			afisare();
		else {k++; init();}	
	}
	else k--;
	

}



}


int main()
{
	
fscanf(f,"%d %d %d ",&n,&K,&T);

for(i=1;i<=T;i++)
	{fscanf(f,"%d %d",&x,&y);

	dusman[x][y]=1;
	dusman[y][x]=1;

	}
fclose(f);

bt();

return 0;
}