Cod sursa(job #2474245)

Utilizator flibiaVisanu Cristian flibia Data 14 octombrie 2019 21:38:47
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("dusman.in");
ofstream out("dusman.out");

int n, m, k, st[1010], sol[1010], x, y;
bool bad[1010][1010];
int viz[1010];

void back(int lvl) {
	if (k == 0)
		return;
	
	if (lvl > n) {
		k--;
		if (k == 0)
			for (int i = 1; i <= n; i++)
				sol[i] = st[i];
		return;
	}
	
	for (int i = 1; i <= n; i++) {
		if (!viz[i] && (lvl == 1 || (lvl > 1 && !bad[i][st[lvl - 1]]))) {
			viz[i] = 1;
			st[lvl] = i;
			back(lvl + 1);
			viz[i] = 0;
		}
	}
}

int main() {
	in >> n >> k >> m;
	for (int i = 1; i <= m; i++) {
		in >> x >> y;
		bad[x][y] = bad[y][x] = 1;
	}
	
	back(1);
	for (int i = 1; i <= n; i++)
		out << sol[i] << ' ';
	
	return 0;	
}