Cod sursa(job #616943)

Utilizator soriynSorin Rita soriyn Data 13 octombrie 2011 18:29:32
Problema Dusman Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
#include<stdlib.h>


int uz[1005][1005];

int p,n,st[1005],cnt,val,m,k,as,ev;


void tipar()
{
	if(cnt<val) cnt++;
	else if(cnt==val)
	{
		for(int i=1;i<=n;i++)
			printf("%d ",st[i]);
		exit(0);
	}
}

void init()
{
	st[k]=0;
}

int succesor()
{
	if(st[k]<n){st[k]++;return 1;}
	return 0;
}

int valid()
{
	if(uz[st[k]][st[k-1]]==1) return 0;
	for(int i=1;i<k;i++) 
		if(st[i]==st[k]) return 0;
	return 1;
}

void back()
{
	k=1;
	cnt=1;
	init();
	while(k>0)
	{
		as=1,ev=0;
		while(as!=0 &&ev==0)
		{
			as=succesor();
			if(as)
				ev=valid();
		}
		if(as)
			if(k==n)
			      tipar();
			else{k++,init();}
			else k--;}
}

int main()
{
	freopen("dusman.in","r",stdin);
	freopen("dusman.out","w",stdout);
	int a,b;
	scanf("%d %d %d",&n,&val,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d %d",&a,&b);
		uz[a][b]=1;
		uz[b][a]=1;
	}
	back();
}