Cod sursa(job #863833)

Utilizator crushackPopescu Silviu crushack Data 24 ianuarie 2013 09:56:26
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#define NMax 1010

const char IN[]="dusman.in",OUT[]="dusman.out";

int N,K,M;
int v[NMax];
bool D[NMax][NMax], b[NMax];

bool back(int x)
{
	int i;
	if (x==N+1){
		--K;
		return K==0;
	}

	for (i=1;i<=N;++i) if (!b[i] && !D[v[x-1]][i]){
		v[x]=i;
		b[i]=true;
		if (back(x+1)) return true;
		v[x]=0;
		b[i]=false;
	}
	return false;
}

int main()
{
	int i,x,y;
	freopen(IN,"r",stdin);
	scanf("%d%d%d",&N,&K,&M);
	for (i=1;i<=M;++i) scanf("%d%d",&x,&y),D[x][y]=D[y][x]=1;
	fclose(stdin);

	back(1);

	freopen(OUT,"w",stdout);
	for (i=1;i<=N;++i) printf("%d ",v[i]);
	printf("\n");
	fclose(stdout);

	return 0;
}