Cod sursa(job #256893)

Utilizator andumMorie Daniel Alexandru andum Data 12 februarie 2009 13:58:38
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#define NMAX 1001

int n,p,m,d[NMAX][NMAX],i,x,y,st[NMAX],q,ap[10];

int valid(int k)
{
 if (ap[st[k]])
	return 0;
 if (d[st[k]][st[k-1]])
	return 0;
 return 1;
}

void afis(int k)
{
 int i;

 for (i=1;i<=k;i++)
	printf("%d ", st[i]);
}

void back(int k)
{
 int x;

 for (x=1;x<=n;x++)
	{
	 st[k]=x;
	 if (valid(k))
		{
		 if (k==n) {
			q++;
			if (q==p)
				afis(k);
			}
		  else{
		 ap[st[k]]=1;
		 back(k+1);
		 ap[st[k]]=0;
		 }
		}
	}
}

int main()
{
 freopen("dusman.in","r",stdin);
 freopen("dusman.out","w",stdout);

 scanf("%d %d %d", &n, &p, &m);
 for (i=1;i<=m;i++)
	{
	 scanf("%d %d", &x,&y);
	 d[x][y]=1;
	 d[y][x]=1;
	}
 back(1);

 return 0;
}