Pagini recente » Denis S | Monitorul de evaluare | Diferente pentru documentatie/textile intre reviziile 107 si 29 | pagina unei legende | Cod sursa (job #2477944)
#include<bits/stdc++.h>
using namespace std;
ifstream f("dusman.in");
ofstream g("dusman.out");
int n, nr_sol, r, m;
bool printed_solution = false;
int viz[1001], v[1001];
short dusman[1001][1001];
bool check(int k)
{
if(k > 1){
if(dusman[v[k]][v[k-1]])
return false;
}
return true;
}
void afisare()
{
for(int i = 1 ; i<= n ; i++){
g<<v[i]<< " ";
}
}
void backtr(int k,int len)
{
if(k-1 == len)
{
nr_sol++;
if(nr_sol == r){
afisare();
printed_solution = true;
return ;
}
}
else if(!printed_solution)
{
for(int i = 1; i <= len; i++)
if(!viz[i])
{
v[k] = i;
viz[i] = 1;
if(check(k)){
backtr(k+1,len);
}
viz[i] = 0;
}
}
}
int main()
{
f>>n>>r>>m;
for(int i = 0 ; i < m ; i++)
{
int x, y;
f>>x>>y;
dusman[x][y] = dusman[y][x] = 1;
}
backtr(1, n);
}