Pagini recente » Cod sursa (job #2881965) | Cod sursa (job #1420878) | Cod sursa (job #1622105) | Cod sursa (job #2892347) | Cod sursa (job #212495)
Cod sursa(job #212495)
#include<iostream.h>
#include<fstream.h>
int v[1000][3],x[1000],n,k,r,nr,m,i,z,y;
void tipar()
{ ofstream f("dusman.out");
for(i=1;i<=n;i++)
f<<x[i]<<" ";
cout<<endl;
}
int valid(int k)
{ int i;
for(i=1;i<k;i++)
if(x[i]==x[k]) return 0;
if(k>1)
for(i=0;i<3;i++)
if(v[x[k]][i]==x[k-1]) return 0;
return 1;
}
int sol(int k)
{ if(k==n) return 1;
return 0;
}
void back()
{k=1; x[k]=0;
while(k>0) if(x[k]<n)
{x[k]++;
if(valid(k))
if(sol(k)) {nr++; if(nr==r) {tipar();break;} }
else {k++;
x[k]=0;
}
}
else k--;
}
int main()
{ifstream h("dusman.in");
h>>n>>r>>m;
for(i=1;i<=m;i++) {h>>z>>y;
if(v[z][0]==0) v[z][0]=y;
else if(v[z][1]==0) v[z][1]=y;
else v[z][2]=y;
if(v[y][0]==0) v[y][0]=z;
else if(v[y][1]==0) v[y][1]=z;
else v[y][2]=z;
}
back();
return 0;
}