Cod sursa(job #2477114)

Utilizator cyber_ghSoltan Gheorghe cyber_gh Data 19 octombrie 2019 17:33:38
Problema Dusman Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 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, int maxN) {
    //cout << step<< "\n";
    if (killMe)  {
        exit(0);
        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 <= maxN; i++) {
        if ( used[i] == false && D[i][ A[step - 1] ] == false) {
            used[i] = true;
            A[step] = i;
            backtrack(step + 1, maxN);
            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, N + 1);
    cout << endl << nrsol;
    return 0;
}