Pagini recente » Cod sursa (job #838074) | Cod sursa (job #1796257) | Cod sursa (job #1303497) | Cod sursa (job #2199097) | Cod sursa (job #2260890)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("dusman.in");
ofstream fout ("dusman.out");
int n,m,w,y,k,a[1010][1010],x[1010],f[1010],p=0,kk;
//vector <int> v[1010];
bool ok=0;
void afis(int k){
for(int i=1 ; i<=k ; ++i)
fout << x[i] <<" ";
fout << endl;
}
bool verif(int k){
if(f[x[k]]==1)
return false;
if(a[x[k]][x[k-1]]==1)
return false;
if(k<=n)
return true;
return false;
}
void back(int k){
if(ok==1)
return;
for(int i=1;i<=n;++i){
x[k]=i;
if(verif(k)){
f[x[k]]=1;
if(k==n){
p++;
if(p==kk){
afis(k);
ok=1;
}
}
back(k+1);
f[x[k]]=0;
}
}
}
int main () {
fin>>n>>kk>>m;
for(int i=0;i<m;i++){
fin>>w>>y;
a[w][y]=1;
a[y][w]=1;
}
// x[0]=1;
back(1);
return 0;
}
/*#include <iostream>
#include <fstream>
using namespace std;
int n,k,x[1010],m,a[1010][1010],z,y,fr[1010];
bool ok=1;
ifstream fin("dusman.in");
ofstream fout("dusman.out");
void backtr(int pas)
{
if(ok==0)
return;
if(pas==n+1){
k--;
if(k==0){
for(int i=1;i<=n;i++)
fout<<x[i]<<"";
ok=0;
return;
}
}
else{
for(int i=1;i<=n;i++)
if(a[x[pas-1]][i]==0&&fr[i]==0){
x[pas]=i;
fr[i]=1;
backtr(pas+1);
fr[i]=0;
}
}
}
int main()
{
fin>>n>>k>>m;
for(int i=1;i<=m;i++){
fin>>z>>y;
a[z][y]=a[y][z]=1;
}
backtr(1);
}
*/