Cod sursa(job #116590)

Utilizator vlad.maneaVlad Manea vlad.manea Data 19 decembrie 2007 00:04:57
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>

#define nmax 1001

int N, K, M, a, b, k, i;

int D[nmax][nmax], sol[nmax], used[nmax];

void io()
{
	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", &a, &b);

		D[a][b] = D[b][a] = 1;
	}
}

void solve (int p)
{
	int om;

	if (k == K) return;

	if (p == N+1)
	{
		++k;

		if (k == K)
		{
			for (i = 1; i < N; i++)
				printf("%d ", sol[i]);

			printf("%d\n", sol[i]);
		}
	}
	else
	{
		for (om = 1; om <= N && k < K; om++)
			if (!used[om] && !D[om][sol[p-1]])
			{
				sol[p] = om;
				used[om] = 1;
				solve(p+1);
				used[om] = 0;
				sol[p] = 0;
			}
	}
}

int main()
{
	io();

	solve(1);

	return 0;
}