Cod sursa(job #2477070)

Utilizator cyber_ghSoltan Gheorghe cyber_gh Data 19 octombrie 2019 16:58:58
Problema Dusman Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("dusman.in");
ofstream fout("dusman.out");

const int MAXN = 1010;
int N, M, K;
int nrsol = 0;
bool killMe = false;
int A[MAXN];
bool used[MAXN];
int D[MAXN][MAXN];




void backtrack(int step, int N, int A[MAXN], bool used[MAXN]) {
    if (step > N) {
        nrsol++;
        if (nrsol == K) {
            for (int i = 1; i <= N ;i++) fout << A[i] << " ";
            killMe = true;
            exit(0);
        }
        return ;
    }
    if (killMe) return;
    for (int i = 1; i <= N; i++) {
        if ( used[i] == false && D[i][ A[i - 1] ] == 0) {
            used[i] = true;
            A[step] = i;
            backtrack(step + 1, N, A, used);
            used[i] = false; 
        }
    }

}

int main() {

    fin >> N >> K >> M;

    for(int i = 1; i <= N; i++) A[i] = i;
    for (int x,y; M--;) {
        fin >> x >> y;
        D[x][y] = 1;
        D[y][x] = 1;
    }
    backtrack(1, N, A, used);
    //cout << endl << nrsol;
    return 0;
}