Cod sursa(job #417730)

Utilizator CS-meStanca Marian Ciprian CS-me Data 14 martie 2010 19:36:14
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>
FILE *fin, *fout;
int n,m,p,x,y,i,a[1001][1001],v[1001],viz[1001],ok,nr;


void tipar(int k){
int i;

	for(i=1;i<=k;i++){
		fprintf(fout,"%d ",v[i]);
	}


}

int cont(int k){

	if(k>1){
		return 1-a[v[k]][v[k-1]];
	}
	return 1;


}


void back(int k){
int i;

	if(ok==1){
		    return;
	}

   for(i=1;i<=n;i++)
	   if(viz[i]==0){
		  v[k]=i;
		  if(cont(k)) {
			 viz[i]=1;
			 if(k==n){
				nr++;
				if(nr==p)
				   {tipar(k);
					ok=1;
					return;
					}
				}
			   else
				back(k+1);
			 viz[i]=0;
		    }
		}
}


int main(){

	fin=fopen("dusman.in","r");
	fout=fopen("dusman.out","w");


	fscanf(fin,"%d %d %d",&n,&p,&m);

	for(i=1;i<=m;i++){
		fscanf(fin,"%d %d",&x,&y);
		a[x][y]=a[y][x]=1;
	}

	back(1);


	fclose(fout);
	fclose(fin);

return 0;
}