Cod sursa(job #458953)

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

#define nmax 1005

using namespace std;
int sol, K, n, m, deg [nmax], V[nmax], G[nmax][5];
inline bool check () {
	int i, j;
	for (i = 1; i <= n; i++)
		for (j = 1; j <= deg[i]; j++)
			if (G[V[i]][j] == V[i + 1] || G[V[i]][j] == V[i - 1])
				return 0;
	return 1;
}
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;
	}
	do {
		if (check ()) ++sol;
		if (sol == K) {
			for (i = 1; i <= n; i++) printf ("%d ", V[i]);
			break;
		}
	} while (next_permutation (V + 1, V + n + 1));
}