Cod sursa(job #551792)

Utilizator KoniacDocea Andrei Koniac Data 11 martie 2011 09:34:13
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<cstdio>
using namespace std;
int i,j,n,k,m,r,a,b,t;
int d[1001][1001];
int v[1001];
int viz[1001];

void afisare(int r)
{
  for(int i=1;i<=r;i++) printf(g,"%d ",v[i]);
  printf(g,"\n");
}

int valid(int r)
{
	if(d[v[r]][v[r-1]]==1 || viz[v[r]]==1 ) return 0;
	return 1;
}

int solutie(int r)
{
	if(r==n) return 1;
	return 0;	
}

void back()
{
	r=1;
	v[r]=0;
	while(r>=1) 
       if(v[r]<n)
	   {
		   v[r]++;
		   
		   if(valid(r))
		   {
			   viz[v[r]]=1;
			   if(solutie(r)) {t++;
						      if(t==k) {afisare(r);return ;}
								viz[v[r]] = 0;
			                  }
		   
			else v[++r]=0;
	   }
	   }
	   else 
	   {r--;
	   viz[v[r]] = 0;
	   }
}	


int main()
{
	
	FILE * f = ("dusman.in","r");
	FILE * g = ("dusman.out","w");
	scanf("%d%d%d",&n,&k,&m);
	for(i=1;i<=m;i++) {  scanf(f,"%d%d",&a,&b); d[a][b]=1; d[b][a]=1; }
	
    back();
	
	fclose(f);
	fclose(g);
	return 0;
}