Pagini recente » Cod sursa (job #1303946) | Clasament testare_olimpiada | Cod sursa (job #1500026) | Cod sursa (job #2458964) | Cod sursa (job #2477097)
#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) {
//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 <= N; i++) {
if ( used[i] == false && D[i][ A[i - 1] ] == false) {
used[i] = true;
A[step] = i;
backtrack(step + 1);
used[i] = false;
}
}
if (step == N) {
nrsol++;
if (nrsol == K) {
for (int i = 1; i <= N ;i++) fout << A[i] << " ";
killMe = true;
}
return ;
}
}
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;
}