Cod sursa(job #340015)

Utilizator ZethpixZethpix Zethpix Data 12 august 2009 16:31:00
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
FILE *f,*g;
long a[1002],b[1002],sol[1002],use[1002],n,x,m,i,nr;
void afis(){
	long i;
	for(i=1;i<=n;i++)
		fprintf(g,"%ld ",sol[i]);
	fprintf(g,"\n");
}
long enemy(){
	long i,j;
	for(i=1;i<=n-1;i++)
		for(j=1;j<=m;j++)
			if(sol[i]==a[j]&&sol[i+1]==b[j]||sol[i]==b[j]&&sol[i+1]==a[j]) return 0;
	return 1;
}
void back(long k){
	long i;
	if(k>n){
		if (enemy()==1) 
			nr++;
		if (nr==x){
			afis();
			return;
		}
	}
	else
		for(i=1;i<=n;i++)
			if(!use[i]){
				use[i]=1;
				sol[k]=i;
				back(k+1);
				use[i]=0;
			}
}
int main(){
	f=fopen("dusman.in","r");
	g=fopen("dusman.out","w");
	fscanf(f,"%ld%ld%ld",&n,&x,&m);
	for(i=1;i<=n;i++) use[i]=0;
	for(i=1;i<=m;i++)
		fscanf(f,"%ld%ld",&a[i],&b[i]);
	back(1);
	fclose(f);
	fclose(g);
	return 0;
}