Cod sursa(job #369217)

Utilizator bugyBogdan Vlad bugy Data 27 noiembrie 2009 15:53:37
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
#define dim  1005
#include<stdlib.h>
int n,v[dim],viz[dim],mat[dim][dim],m,k,a,b,kk,cont;

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

int solutie()
{int i,x,y;
for(i=2;i<n;i++)
{x=v[i-1]; y=v[i+1];
	if(mat[ v[i] ][x]==1||mat[ v[i] ][y]==1)
		return 0;
}
cont++; return 1;


}


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);
}

int bkt(int k)
{int i;

if(k>n) 
	{if(solutie())
		if(kk==cont)	afisare();}
else
	 {for(i=1;i<=n;i++)
		if(viz[i]==0)
			{v[k]=i;
			 viz[i]=1;
			 bkt(k+1);
			 viz[i]=0;
			}
	}
return 0;
}


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;
	}
	
	
bkt(1);

fclose(f);
fclose(g);
return 0;
}