Cod sursa(job #502170)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 17 noiembrie 2010 22:35:44
Problema Dusman Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
FILE *f, *g;
int n,m,p,a[1001][1001],x[1001],viz[1001],ok,nr;


void tipar(int k){
int i;
	for(i=1;i<=k;i++){
		fprintf(g,"%d ",x[i]);
	}
}

int cont(int k){
	if(k>1 && a[x[k]][x[k-1]]==1){
		return 0;
	}
	
	int i;
 for(i=1;i<k;i++) 
   if(x[i]==x[k]) 
     return 0;
return 1;
}

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)==1) {
			 viz[i]=1;
			 if(k==n){
				nr++;
				if(nr==p)
				   {tipar(k);
					ok=1;
					return;
					}
				}
			   else
				back(k+1);
			 viz[i]=0;
		    }
		}
}
int main(){
int x,y,i;
	
	f=fopen("dusman.in","r");
	g=fopen("dusman.out","w");

	fscanf(f,"%d %d %d",&n,&p,&m);
	for(i=1;i<=m;i++){
		fscanf(f,"%d %d",&x,&y);
		a[x][y]=a[y][x]=1;
	}
	back(1);
    fclose(f);
	fclose(g);

return 0;
}