Cod sursa(job #1034515)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 17 noiembrie 2013 21:26:22
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;

ifstream fin("dusman.in");
ofstream fout("dusman.out");

#define NMAX 1001

int i, N, K, M;
int A, B, P;

int x[NMAX];

bool Used[NMAX];
bool a[NMAX][NMAX];

void afis() {
	++P;
	if (P == K) {
		for (int i = 1; i <= N; ++i)
			fout << x[i] << ' ';
		fout << '\n';
	}
}

void back(int k) {
	if (k == N + 1) afis();
	else {
		if (k == 1) {
			for (int i = 1; i <= N; ++i) {
				Used[i] = 1;
				x[k] = i; 
				back(k + 1); 
				Used[i]=0;
			}
		}
		else {
			for (int i = 1; i <= N; ++i) {
				if (!Used[i] && !a[x[k - 1]][i]) {
					Used[i] = 1;
					x[k] = i;
					back(k + 1);
					Used[i] = 0;
				}
			}
		}
	}
}

int main() {
	fin >> N >> K >> M;
	for (i = 1; i <= M; ++i) {
		fin >> A >> B;
		a[A][B] = a[B][A] = true;
	}
	back(1);
	return 0;
}