Cod sursa(job #502165)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 17 noiembrie 2010 22:11:30
Problema Dusman Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
FILE *f,*g;
int n,m,nr,p;
int a[1001][1001],x[1001];

void tipar(int k)
{int i;
 for(i=1;i<=k;i++)
    fprintf(g,"%d ",x[i]); 
}

int cont(int k)
{int y=1;
 if(k>1 && a[x[k-1]][x[k]]==1)
	y=0; 
 int i;
 for(i=1;i<k;i++) 
   if(x[i]==x[k]) 	
	  y=0; 
return y;
}

void back()
{int k;
 k=1;
 x[k]=0;
 while(k>0)
    if(x[k]<n)
	{x[k]=x[k]+1;
	  if(cont(k)==1) 
	   if(k==n)
	   {nr++;
	    if(nr==p)
		{tipar(k);
		break;
		} 
	   }   
	  else 
	  {k++;
	   x[k]=0; 
	  } 
	}
	else k--; 
}

int main()
{int i,j;
 f=fopen("dusman.in","r");
 g=fopen("dusman.out","w");
 
 fscanf(f,"%d %d %d",&n,&p,&m);
 int x,y;
 for(i=1;i<=m;i++)
 {fscanf(f,"%d %d",&x,&y);
  a[x][y]=1;
  a[y][x]=1;
 }
 fclose(f);
 
 nr=0;
 back();
return 0;	
}