Cod sursa(job #2478899)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 22 octombrie 2019 21:04:23
Problema Dusman Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <math.h>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dusman.in");
ofstream fout("dusman.out");
int N,M,K;
map <pair<int,int> , bool> hate;

int perm[1010],viz[1010],contor;
void afisare(int n)
{
    int i,ok=0;
    for(i=1;i<=n;i++)
    {
        fout<<perm[i]<<" ";
    }
    fout<<"\n";
}
bool verificare_no_hate(int n)
{
    int i;
    for(i=1;i<=n-1;i++)
    {
        if(hate[{perm[i],perm[i+1]}]==true)
            return false;
    }
    return true;
}
void bkt(int k,int n)
{
    if(k==n+1)
    {
        if(verificare_no_hate(n)==true)
        {
            contor++;
            if(contor==K)
            {
                afisare(n);
            }
        }
        return;
    }
    else
    {
        int i;
        for(i=1;i<=n;i++)
        {
            if(viz[i]==0)
            {
                viz[i]=1;
                perm[k]=i;
                bkt(k+1,n);
                viz[i]=0;//undo
                //perm[k]=0;//undo
            }
        }
    }
}
int main()
{
    int i;
    fin>>N>>K>>M;
    for(i=1;i<=M;i++)
    {
        int a,b;
        fin>>a>>b;
        hate[{a,b}]=true;
        hate[{b,a}]=true;
    }
    bkt(1,N);
    return 0;
}