Cod sursa(job #197005)

Utilizator gcosminGheorghe Cosmin gcosmin Data 30 iunie 2008 18:09:23
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
#include <bitset>
using namespace std;

#define NMAX 1010

int N, K, M;

bitset <NMAX> jeg[NMAX];

char ap[NMAX];
int a[NMAX];
int nr = 0;

int back(int k)
{
	if (k == N + 1) {
		nr++;
		if (nr == K) return 1;
	}

	int i;

	for (i = 1; i <= N; i++) {
		if (ap[i]) continue;
		if (jeg[a[k - 1]][i]) continue;

		a[k] = i; ap[i] = 1;
		if (back(k + 1)) return 1;
		ap[i] = 0;
	}

	return 0;
}

int main()
{
	int i, x, y;

	freopen("dusman.in", "r", stdin);
	freopen("dusman.out", "w", stdout);

	scanf("%d %d %d", &N, &K, &M);

	for (i = 1; i <= M; i++) {
		scanf("%d %d", &x, &y);
		jeg[x][y] = jeg[y][x] = 1;
	}

	back(1);

	for (i = 1; i <= N; i++) printf("%d ", a[i]);
	printf("\n");

return 0;
}