Cod sursa(job #2477085)

Utilizator cyber_ghSoltan Gheorghe cyber_gh Data 19 octombrie 2019 17:05:45
Problema Dusman Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 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];
bool D[MAXN][MAXN];




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

}

int main() {

    fin >> N >> K >> M;

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