Cod sursa(job #2311892)

Utilizator mihailescu_eduardMihailescu Eduard-Florin mihailescu_eduard Data 3 ianuarie 2019 20:14:45
Problema Dusman Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("dusman.in");
ofstream fout("dusman.out");

static const int NMAX = 1e3 + 5;

int n,p,m,ct;
int v[NMAX];
int dus[NMAX][NMAX];

void ReadInput()
{
    fin >> n >> p >> m;
    int a ,b;
    for(int i = 1; i<= m; ++i)
    {
        fin >> a >> b;
        dus[a][b] = 1;
        dus[b][a] = 1;
    }
}
bool Verif(int k)
{
    if(k == 1)
        return true;
    for(int i = 1; i< k; ++i)
    {
        if(v[i] == v[k])
            return false;
    }
    if(dus[v[k]][v[k-1]])
        return false;

    return true;
}

void PrintSolution()
{
    for(int i =1; i<=n ;++i)
        fout << v[i] << " ";
    fout << endl;
}

void Backtrack(int k)
{
    for(int x = 1; x <= n; ++x)
    {
        v[k] = x;
        if(Verif(k))
        {
            if(k == n)
            {
                ct++;
                if(ct == p){
                    PrintSolution();
                    exit(0);
                }

            }
            Backtrack(k+1);
        }
    }
}

int main()
{
    ReadInput();
    Backtrack(1);

    return 0;
}