Pagini recente » Cod sursa (job #101380) | Cod sursa (job #793274) | Cod sursa (job #645010) | Cod sursa (job #657701) | Cod sursa (job #2302383)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ofstream fout("dusman.out");
vector<int> ans;
int cnt, k;
void back(int poz, int n, int v[], int **mat) {
if (poz == n + 1) {
++cnt;
if (cnt == k) {
for (int i = 0; i < ans.size(); ++i) {
fout << ans[i] << ' ';
}
fout << '\n';
exit(0);
}
return ;
}
for (int i = 1; i <= n; ++i) {
if (ans.size() == 0 && v[i] == 0) {
ans.push_back(i);
v[i] = 1;
back(poz + 1, n, v, mat);
ans.pop_back();
v[i] = 0;
}
else if (v[i] == 0 && ans.size() > 0 && mat[ans.back()][i] == 0) {
ans.push_back(i);
v[i] = 1;
back(poz + 1, n, v, mat);
ans.pop_back();
v[i] = 0;
}
}
}
int main() {
int n, i, j, m;
ifstream fin("dusman.in");
fin >> n >> k >> m;
int ** mat = new int*[n + 1];
int *v = new int[n + 1];
for (i = 0; i <= n; ++i) {
v[i] = 0;
mat[i] = new int[n + 1];
for (j = 0; j <= n; ++j) {
mat[i][j] = 0;
}
}
for (i = 1; i <= m; ++i) {
int x, y;
fin >> x >> y;
mat[x][y] = mat[y][x] = 1;
}
back(1, n, v, mat);
return 0;
}