Pagini recente » Istoria paginii preoni-2005/runda-3/clasament-11-12 | fdsfdsfds | Cod sursa (job #2021828) | Cod sursa (job #2989056) | Cod sursa (job #2479897)
/**
* Worg
*/
#include <vector>
#include <bitset>
#include <fstream>
#include <cstdlib>
std::ifstream fin("dusman.in"); std::ofstream fout("dusman.out");
void print(std::vector<int>& curr_perm) {
for (int& num : curr_perm) {
fout << num << " ";
}
fout << '\n';
exit(0);
}
void back(int step, const int& n, int& k, std::vector<bool>& used, std::vector<int>& curr_perm, std::vector<std::vector<bool>>& enemies) {
if (step == n) {
if (--k == 0) {
print(curr_perm);
}
}
for (int i = 1; i <= n; i++) {
if ((step == 0 || enemies[curr_perm[step - 1]][i] == false) && !used[i]) {
curr_perm[step] = i;
used[i] = true;
back(step + 1, n, k, used, curr_perm, enemies);
used[i] = false;
}
}
}
int main() {
int n, k, m; fin >> n >> k >> m;
std::vector<std::vector<bool>> enemies(n + 1, std::vector<bool>(n + 1, false));
for (int i = 0; i < m; i++) {
int x, y; fin >> x >> y;
enemies[x][y] = enemies[y][x] = true;
}
std::vector<int> curr_perm(n);
std::vector<bool> used(n, false);
back(0, n, k, used, curr_perm, enemies);
return 0;
}