Cod sursa(job #2047487)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 24 octombrie 2017 21:30:14
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>

const int MAXN = 1e3;

bool v[MAXN + 1][MAXN + 1],
     vis[MAXN + 1];
int p[MAXN + 1];

inline void bkt(int x, int &k, int n) {
  if (x == n + 1) {
    --k;
    return;
  }
  for (int i = 1; i <= n && k; ++i) {
    if (!vis[i] && !v[p[x - 1]][i]) {
      p[x] = i;
      vis[i] = 1;
      bkt(x + 1, k, n);
      vis[i] = 0;
    }
  }
}

int main() {
  int n, m, k, x, y;
  FILE *f = fopen("dusman.in", "r");
  fscanf(f, "%d%d%d", &n, &k, &m);
  for (int i = 0; i < m; ++i) {
    fscanf(f, "%d%d", &x, &y);
    v[x][y] = v[y][x] = 1;
  }
  fclose(f);
  bkt(1, k, n);
  f = fopen("dusman.out", "w");
  for (int i = 1; i <= n; ++i) {
    fprintf(f, "%d ", p[i]);
  }
  fprintf(f, "\n");
  fclose(f);
  return 0;
}