Cod sursa(job #204449)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 24 august 2008 10:36:02
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>

const int N_MAX = 1024;

int N, K, found = 0;
int d[N_MAX][N_MAX], is[N_MAX], st[N_MAX];

void back(int lev)
{
	if (!found) {
		if (lev == N + 1) {
			K --;
			if (K == 0) {
				for (int i = 1; i <= N; i ++) printf("%d ", st[i]);
				found = 1;
			}
		} else {
			for (int c = 1; c <= N; c ++) {
				if (!is[c] && !d[c][st[lev - 1]]) {
					is[c] = 1;
					st[lev] = c;
					back(lev + 1);
					is[c] = 0;
				}
			}
		}
	}
}

int main()
{
	freopen("dusman.in", "r", stdin);
#ifndef _SCREEN_
	freopen("dusman.out", "w", stdout);
#endif

	int M, x, y;
	scanf("%d %d %d\n", &N, &K, &M);
	for (int i = 1; i <= M; i ++) {
		scanf("%d %d\n", &x, &y);
		d[y][x] = 1;
		d[x][y] = 1;
	}

	back(1);

	return 0;
}