Pagini recente » Cod sursa (job #3238703) | Cod sursa (job #2800716) | Cod sursa (job #2940541) | Cod sursa (job #2191875) | Cod sursa (job #1690683)
#include <iostream>
#include <fstream>
#define NMAX 1001
using namespace std;
ifstream in("dusman.in");
ofstream out("dusman.out");
int n, m, k, v[NMAX], a[NMAX][NMAX], nr;
void read(){
in>>n>>k>>m;
int x, y;
for(int i=1; i<=m; i++){
in>>x>>y;
a[x][y]=1;
}
}
bool sol(int x){
if(x==n)return true;
return false;
}
bool valid(int x){
for(int i=1; i<x; i++){
if(v[i]==v[x]){
return false;
}else if(a[v[i]][v[i-1]]==1||a[v[i]][v[i+1]]==1||a[v[i-1]][v[i]]==1||a[v[i+1]][v[i]]==1){
return false;
}
}
return true;
}
void print(){
for(int i=1; i<=n; i++)out<<v[i]<<" ";
}
int backtrack(int x){
for(int i=1; i<=n; i++){
v[x]=i;
if(valid(x)){
if(sol(x)){
nr++;
if(nr==k){
print();
return -1;
}
}else{
backtrack(x+1);
}
}
}
}
int main(){
v[0]=0;
nr=0;
read();
backtrack(1);
return 0;
}