Cod sursa(job #411122)

Utilizator mihai_voiVoicescu Mihai mihai_voi Data 4 martie 2010 18:52:44
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 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)
{
	int i;
	if(ok==1) return;
	for(i=1;i<=n;i++)
		if(viz[i]==0)
		{
			x[k]=i;
			if(cont(k))
			{ viz[i]=1;
			  if(k==n){
				  nr++;
				  if(nr==kk){
					  tipar();
					  ok=1;}
			  }
			else
				 back(k+1);
			}
	
			viz[i]=0;
		}
		if(ok==1) return;
}





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