Cod sursa(job #113311)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 9 decembrie 2007 17:38:52
Problema Dusman Scor Ascuns
Compilator cpp Status done
Runda Marime 0.7 kb
#include <stdio.h>

#define nmax 1024
#define FOR(i,s,d) for(i=(s);i<(d);++i)

char A[nmax][nmax],viz[nmax];
int n,m,k,st[nmax],ok;

void doit(int i)
{
	if(k<0)
		return;
	if(i>n)
	{
		if(!(--k))
		{
			FOR(i,1,n+1)
				printf("%d ",st[i]);
			printf("\n");
		}
		return;
	}
	int j;
	FOR(j,1,n+1)
	{
		if(!viz[j]&&A[st[i-1]][j]&&k>0)
			ok++;
		if(!viz[j]&&!A[st[i-1]][j])
			viz[j]=1,st[i]=j,doit(i+1),viz[j]=0;
	}
}

int main()
{
	int i,j,ii;
	freopen("dusman.in","r",stdin);
	freopen("dusman.out","w",stdout);
	scanf("%d %d %d",&n,&k,&m);
	FOR(ii,0,m)
	{
		scanf("%d %d",&i,&j);
		A[i][j]=A[j][i]=1;
	}
/*
	n=13;
	k=1;
	FOR(i,7,14) FOR(j,7,14)
		A[i][j]=1;
*/
	doit(1);
	fprintf(stderr,"%d\n",ok);
	return 0;
}