Cod sursa(job #2479106)

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

int perm[1010],viz[1010],contor;
void afisare(int n)
{
    int i,ok=0;
    for(i=1;i<=n;i++)
    {
        cout<<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;
}*/
bool verificare(int a,int b)
{
    int i;
    for(i=0;i<hate[a].size();i++)
    {
        if(hate[a][i]==b)
        {cout<<1;
            return false;}
    }
    return true;
}
void bkt(int k,int n)
{
    if(k==n+1)
    {
//        if(verificare_hate(n)==true)
//        {

            if(contor==K)
            {
                afisare(n);
                return;
                //goto eti;
            }
        //}
          return;
    }
    else
    {
        int i;
        for(i=1;i<=n;i++)
        {
            if((viz[i]==0) &&  ( verificare(k,i)==false)  )
            {
                viz[i]=1;
                perm[k]=i;
             //   k++;
                if(k==n+1){ contor++;}
                bkt(k+1,n);
               // k--;
                viz[i]=0;//undo
                //perm[k]=0;//undo
            }
        }
    }
}
int main()
{
    int i,j;
    fin>>N>>K>>M;
    for(i=1;i<=M;i++)
    {
        int a,b;
        fin>>a>>b;
        hate[a].push_back(b);
        hate[b].push_back(a);
    }
    for(i=1;i<=N;i++)
    {
        for(j=0;j<hate[i].size();j++)
        {
            cout<<hate[i][j]<<" ";
        }
       // cout<<"\n";
    }
    bkt(1,N);
    return 0;
}