Cod sursa(job #2013768)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 22 august 2017 13:02:24
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

FILE *fi, *fout;

const int MAXN = (int) 1e3;

bool ok[MAXN + 1][MAXN + 1];

bool viz[MAXN + 1];
int v[MAXN];

int n, m, k;

void bkt(int lvl) {
    int i;
    if(lvl == n) {
        k--;
        if(k == 0) {
            for(i = 0; i < n; i++)
                fprintf(fout,"%d " ,v[i]);
            exit(0);
        }
    }
    else {
        for(i = 1; i <= n; i++)
          if(viz[i] == 0) {
              if(lvl == 0 || (lvl > 0 && ok[v[lvl - 1]][i] == 1)) {
                  viz[i] = 1;
                  v[lvl] = i;
                  bkt(lvl + 1);
                  viz[i] = 0;
              }
          }
    }
}

int main() {
    int a, b, i;
    fi = fopen("dusman.in" ,"r");
    fout = fopen("dusman.out" ,"w");
    fscanf(fi,"%d %d %d " ,&n,&k,&m);
    memset(ok, 1, sizeof(ok));
    for(i = 1; i <= m; i++) {
        fscanf(fi,"%d %d " ,&a,&b);
        ok[a][b] = ok[b][a] = 0;
    }
    bkt(0);
    fclose(fi);
    fclose(fout);
    return 0;
}