Pagini recente » Cod sursa (job #2068917) | Cod sursa (job #1187045) | Cod sursa (job #1680920) | Cod sursa (job #1723164) | Cod sursa (job #150098)
Cod sursa(job #150098)
#include<fstream.h>
#define max 1000
int s[max+1], k, n, m, nr_sol;
char a[max][max]; int use[max];
ifstream f("dusman.in");
ofstream g("dusman.out");
void back();
void write();
void read();
int corect(int o);
int sol(int o);
int main()
{ read();
back();
g.close();
return 0;
}
void back()
{ int i;
i=1; s[i]=0; nr_sol=0;
while(i!=0)
if(s[i]<n)
{ s[i]++;
if(corect(i))
{ nr_sol+=sol(i);
if(nr_sol==k)
{ write();
return;
}
else
{ if(i<n)
{ use[s[i]]=1;
i++;
s[i]=0;
}
}
}
}
else
{ i--;
use[s[i]]=0;
}
}
int corect(int o)
{ int i, ok=1;
if(use[s[o]]==1)
ok=0;
if(a[s[o]][s[o-1]])
ok=0;
return ok;
}
int sol(int o)
{ if(o==n)
return 1;
return 0;
}
void read()
{ int i, x, y;
f>>n>>k>>m;
for(i=0; i<m; i++)
{ f>>x>>y;
a[x][y]=1;
a[y][x]=1;
}
}
void write()
{ int i;
for(i=1; i<=n; i++)
{ g<<s[i]<<' ';
}
}