Cod sursa(job #117325)

Utilizator marinMari n marin Data 21 decembrie 2007 10:18:58
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 1001

long int n,k,m,i,ii,jj,p,nr;
char a[MAX][MAX];
long int x[MAX];
char viz[MAX];

void back(){
  long int i;
  if (k==n+1) {
    if (a[x[n]][x[1]]==0) {
      nr++;
      if (nr==p) {
	FILE *g = fopen("dusman.out","w");
	for (i=1;i<=n;i++){
	  fprintf(g,"%ld ",x[i]);
	}
	fclose(g);
        exit(0);
      }
    }
  }

  else {
    for (i=1;i<=n;i++) {
      if ((viz[i]==0)&&(a[x[k-1]][i]==0)){
	viz[i]=1;
	x[k]=i;
	k++;

	back();
	k--;
	viz[i]=0;
      }
    }
  }

}


int main(){
  FILE *f = fopen("dusman.in","r");
  fscanf(f,"%ld %ld %ld",&n,&p,&m);
  for (i=1;i<=m;i++){
    fscanf(f,"%ld %ld",&ii,&jj);
    a[ii][jj]=a[jj][ii]=1;
  }
  fclose(f);
  k=1;
  back();


  return 0;
}