Cod sursa(job #411152)

Utilizator mihai_voiVoicescu Mihai mihai_voi Data 4 martie 2010 19:05:08
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
FILE *f,*g;
char a[1001][1001];
int viz[1001],m,n,kk,i,ok,x[1001],nr;
int cont(int k)
{
	if(k>1 &&a[x[k]][x[k-1]]==1)
		 return 0;
	return 1;
}
void tipar()
{
	int i;
	for(i=1;i<=n;i++)
		fprintf(g,"%d ",x[i]);
}
void back()
{
	int k;
	k=1;x[k]=0;
	while(k>0)
		  if(x[k]<n){
			  x[k]=x[k]+1;
			  if(viz[x[k]]==0)
				if(cont(k))
				{ viz[x[k]]=1;
				   if(k==n)
				   {nr++;
				     if(kk==nr){
						  tipar();
					     return;}
					 viz[x[k]]=0;
				   }
				   else
				   {k++;
				   x[k]=0;}
				}
		  }
		  else{
			  k--;
			  viz[x[k]]=0;}
}





int main()
{
	int x1,x2;
	f=fopen("dusman.in","r");
	g=fopen("dusman.out","w");
	fscanf(f,"%d %d %d",&n,&kk,&m);
	for(i=1;i<=m;i++)
	{
		fscanf(f,"%d %d",&x1,&x2);
		a[x1][x2]=1;
		a[x2][x1]=1;
	}
back();		
	return 0;	
}