Cod sursa(job #116753)

Utilizator adrianaqtreus adriana adrianaqt Data 19 decembrie 2007 14:27:54
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<iostream.h>
#include<fstream.h>
ifstream f("date.in");
ofstream g("date.out");
typedef int stiva[100];
stiva st;
int a[10][10],n,m,x,nr=0;
void init(int k)
{ st[k]=0;}
int succesor(int k)
{ if(st[k]<n){st[k]++;
	       return 1;}
  else return 0;
}
int verif(int k)
{   for(int i=1;i<k;i++)
      if(st[k]==st[i])return 0;
  for(int i=1;i<=m;i++)
  for(int j=1;j<=2;j++)
  if(a[i][j]==st[k]){if(j==1&&a[i][j+1]==st[k-1])return 0;
		     if(j==2&&a[i][j-1]==st[k-1])return 0;}
  return 1;
}
int valid(int k)
{   
if(verif(k)==0)return 0;
return 1;}
int solutie(int k)
{return k==n;}
void tipar()
{ for(int i=1;i<=n;i++)
g<<st[i]<<" ";
}
void back(int k)
{  init(k);
     while(succesor(k))
      if(valid(k))
      if(solutie(k))
     { nr++;
      if(nr==x)tipar();}
      else back(k+1);
}
int main()
{f>>n>>x>>m;
for(int i=1;i<=m;i++)
for(int j=1;j<=2;j++)f>>a[i][j];
back(1);
return 0;}