Cod sursa(job #244466)

Utilizator dennyBurligica Denisa denny Data 15 ianuarie 2009 09:08:39
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream.h>
#include <iostream.h>
int n,k,m,b,a[1000][3],x[1000],nr=0,A,B;
ifstream f("dusman.in");
ofstream g("dusman.out");

int valid(int k)
{int i,j;
for(i=1;i<k;i++) if(x[i]==x[k]) return 0;
if(k>1)for(j=1;j<=3;j++)if(a[x[k]][j]==x[k-1]) return 0;
return 1;}

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

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

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


void main()
{int i,j;

f>>n>>b>>m;
for(i=1;i<=m;i++)
 {f>>A>>B;
  for(j=1;j<=3;j++) if(a[A][j]==0) a[A][j]=B;
  for(j=1;j<=3;j++) if(a[B][j]==0) a[B][j]=A;
  }
back();}