Cod sursa(job #244470)

Utilizator dennyBurligica Denisa denny Data 15 ianuarie 2009 09:22:50
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream.h>
#include <iostream.h>
int n,k,v[1000],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;
if(v[x[k]]==1) 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)) {v[x[k]]=1;if(solutie(k))
			{nr++;v[x[k]]=0;if(nr==b) tipar(k);
			}
		else{k++;
		x[k]=0;} }}
else {k--;v[x[k]]=0;}}


int 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();
return 0;}