Cod sursa(job #369246)

Utilizator bugyBogdan Vlad bugy Data 27 noiembrie 2009 17:17:45
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
using namespace std;
#define dim 1005 
#include<stdlib.h>
int n,k,v[dim],ev,as,mat[dim][dim],kk,a,b,m;

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||mat[v[k]][v[k-1]]==1)
	return 0;
else 
	return 1;
}
int valid()
{int i;
	for(i=1;i<k;i++)
	{
		if(v[i]==v[k])
			return 0;
	}
	return 1;
}
int solutie()
{
	if(k==n) return 1;
	else return 0;

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


}

void bt()
{
k=1; //pozitia in vector de la care pormin
init (); //initializeaza prima pozitie din vector
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()
{
int i;
	
fscanf(f,"%d%d%d",&n,&kk,&m);


for(i=1;i<=m;i++)
	{fscanf(f,"%d%d",&a,&b);
	mat[a][b]=1;
	mat[b][a]=1;
	}
	

bt();
	
return 0;}