Cod sursa(job #277683)

Utilizator Addy.Adrian Draghici Addy. Data 11 martie 2009 20:53:18
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#define DIM 1002

int s[DIM],viz[DIM];
int d[DIM][DIM];
int n,m,nr,k,x,y,i,w;

  FILE *f = fopen("dusman.in", "r");
  FILE *g = fopen("dusman.out", "w");

int cont(int k) {
  if (viz[s[k]]==2)
    return 0;
  if (k==1)
    return 1;
  if (d[s[k]][s[k-1]]==1)
    return 0;
  return 1;
}

void sol() {
  for (int i=1; i<=n; i++)
    fprintf(g,"%d ",s[i]);
}

int main(){

  fscanf(f,"%d %d %d",&n,&nr,&m);

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

  k = 1;
  s[k] = 0;

  while (k > 0)
    if (s[k] < n) {
      viz[s[k]]--;
      s[k]++;
      viz[s[k]]++;
      if (cont(k))
	if (k==n) {
	  w++;
	  if (w==nr) {
	    sol();
	    break;
	  }
	}
	else {
	  k++;
	  s[k] = 0;
	}
    }
    else {
      viz[s[k]]--;
      k--;
    }

  fclose(f);
  fclose(g);

  return 0;
}