Pagini recente » Cod sursa (job #1040176) | Cod sursa (job #842221) | Cod sursa (job #2530247) | Cod sursa (job #2061008) | Cod sursa (job #2471280)
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
ifstream fin("dusman.in");
ofstream fout("dusman.out");
void generate_friendly_perm(int pos, int n, int k, vector<int> &cur_perm, vector<vector <int>> &enemies, vector<int> &options, int &count) {
if (pos == n) {
count++;
if (count == k) {
for (int i = 0; i < n; i++)
fout << cur_perm[i] << " ";
fout << "\n";
}
return;
}
if (count < k) {
for (int i = 1; i <= n; i++) {
if (options[i] == 1 && (pos == 0 || (pos > 0 && enemies[cur_perm[pos - 1]][i] == 0))) {
options[i] = 0;
cur_perm[pos] = i;
generate_friendly_perm(pos + 1, n, k, cur_perm, enemies, options, count);
options[i] = 1;
}
}
}
return;
}
int main() {
int n, k, m;
fin >> n >> k >> m;
vector<vector <int>> enemies(n + 1, vector<int>(n + 1, 0));
for (int i = 0; i < m; i++) {
int a, b;
fin >> a >> b;
enemies[a][b] = 1;
enemies[b][a] = 1;
}
vector<int> cur_perm(n), options(n + 1, 1);
options[0] = 0;
int count = 0;
generate_friendly_perm(0, n, k, cur_perm, enemies, options, count);
return 0;
}