Cod sursa(job #411454)

Utilizator savimSerban Andrei Stan savim Data 4 martie 2010 21:49:47
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>

#define MAX_N 1024

short int d[MAX_N][MAX_N];
short int use[MAX_N];
int n, k, m, nr;
int perm[MAX_N];

void back(int poz) {
	if (poz > n) {
		nr++;
		if (nr == k) {
			for (int i = 1; i <= n; i++)
				printf("%d ", perm[i]);
			printf("\n");
		}
		return;
	}
	
	for (int i = 1; i <= n; i++)
		if (use[i] == 0 && d[i][perm[poz - 1]] == 0) {
			use[i] = 1; perm[poz] = i;
			back(poz + 1);
			use[i] = 0;
			
			if (nr == k) return;
		}
}

int main() {

	freopen("dusman.in", "r", stdin);
	freopen("dusman.out", "w", stdout);
	
	scanf("%d %d %d", &n, &k, &m);
	for (int i = 1; i <= m; i++) {
		int x, y;
		scanf("%d %d", &x, &y);
		d[x][y] = d[y][x] = 1;
	}
	
	back(1);
	
	return 0;
}