Cod sursa(job #458955)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 27 mai 2010 10:44:18
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 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];
int p;
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 (p == 1) return;
	if (k == n + 1) {
		++sol;
		if (sol == K) {
			p = 1;
			for (i = 1; i <= n; i++)
				printf ("%d ", V[i]);
		}
		return ;
	}
	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);
}