Cod sursa(job #458954)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 27 mai 2010 10:36:37
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include <algorithm>

#define nmax 1005

using namespace std;
int sol, K, n, m, deg [nmax], V[nmax], G[nmax][5];
bool viz [nmax];
inline bool check (int x, int y) {
	int i;
	for (i = 1; i <= deg[y]; i++)
		if (G[y][i] == x)
			return 0;
	return 1;
}
inline void back (int k) {
	int i;
	if (k == n + 1) {
		++sol;
		if (sol == K) for (i = 1; i <= n; i++) printf ("%d ", V[i]);
	}
	else {
		for (i = 1; i <= n; i++)
			if (!viz[i] && check (V[k - 1], i)) {
				viz [i] = 1;
				V[k] = i;
				back (k + 1);
				viz [i] = 0;
			}
	}

}
int main () {
	int i, a, b;
	freopen ("dusman.in", "r", stdin);
	freopen ("dusman.out", "w", stdout);
	scanf ("%d%d%d\n", &n, &K, &m);
	for (i = 1; i <= n; i++) V[i] = i;
	V[0] = V[n + 1] = 100000;
	for (i = 1; i <= m; i++) {
		scanf ("%d%d\n", &a, &b);
		G[a][++deg[a]] = b;
		G[b][++deg[b]] = a;
	}
	back (1);
}