Cod sursa(job #2477944)

Utilizator dragos99Homner Dragos dragos99 Data 21 octombrie 2019 12:58:11
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#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);
}