Pagini recente » Cod sursa (job #1656215) | Cod sursa (job #994937) | Cod sursa (job #2153327) | Cod sursa (job #2229376) | Cod sursa (job #2475534)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <cstdlib>
//#define f cin
#define NMAX 8001
using namespace std;
ifstream f("dusman.in");
ofstream g("dusman.out");
int n, m, k;
vector<int> a[NMAX];
int v[NMAX];
int vis[NMAX];
int cnt;
void afisare() {
for (int i = 0; i < n; ++i) {
g << v[i] + 1 << " ";
}
}
bool valid(int k1) {
if (vis[v[k1]] == 1) return false;
if (k1 == 0) return true;
int neighbour = v[k1 - 1];
for (int i = 0; i < a[neighbour].size(); ++i) {
if (v[k1] == a[neighbour][i]) return false;
}
return true;
}
void bk(int k1) {
for (int i = 0; i < n; ++i) {
v[k1] = i;
if (valid(k1)) {
vis[v[k1]] = 1;
if (k1 == n - 1) {
cnt ++;
if (cnt == k) {
afisare();
exit(EXIT_SUCCESS);
}
} else bk(k1 + 1);
vis[v[k1]] = 0;
}
}
}
int main() {
f >> n >> k >> m;
for (int i = 0; i < m; ++i) {
int x, y;
f >> x >> y;
x --;
y --;
a[x].push_back(y);
a[y].push_back(x);
}
bk(0);
return 0;
}