Cod sursa(job #2387386)

Utilizator hrazvanHarsan Razvan hrazvan Data 24 martie 2019 16:22:24
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#define MAXN 1000
char pus[MAXN];
int r[MAXN];
int n, k, m;
int ma[MAXN][MAXN];
int v[MAXN];

void bkt(int p){
  int i;
  if(p == n){
    k--;
    if(k == 0)
      for(i = 0; i < n; i++)
        r[i] = v[i];
  }
  else{
    for(i = 0; i < n; i++){
      if(!pus[i] && (p == 0 || (p > 0 && !ma[v[p - 1]][i]))){
        v[p] = i;
        pus[i] = 1;
        bkt(p + 1);
        pus[i] = 0;
        if(k == 0)
          return ;
      }
    }
  }
}

int main(){
  freopen("dusman.in", "r", stdin);
  freopen("dusman.out", "w", stdout);
  scanf("%d%d%d", &n, &k, &m);
  int i, x, y;
  for(i = 0; i < m; i++){
    scanf("%d%d", &x, &y);
    x--;  y--;
    ma[x][y] = ma[y][x] = 1;
  }
  bkt(0);
  for(i = 0; i < n; i++)
    printf("%d ", r[i] + 1);
  return 0;
}