Mai intai trebuie sa te autentifici.
Cod sursa(job #2477085)
Utilizator | 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;
}