Cod sursa(job #275954)

Utilizator Addy.Adrian Draghici Addy. Data 10 martie 2009 19:18:44
Problema Dusman Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

int s[1002];
int d[1002][1002];
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 (d[s[k]][s[k-1]]==1 || d[s[k-1]][s[k]]==1)
    return 0;
  for (int i=1; i<k; i++)
    if (s[i]==s[k])
      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] = 1;
  }

  k = 1;
  s[k] = 0;

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

  fclose(f);
  fclose(g);

  return 0;
}