Cod sursa(job #2474216)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 14 octombrie 2019 20:57:09
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stdlib.h>
using namespace std;
ifstream f("dusman.in");
ofstream g("dusman.out");
int sol,n,m,k,v[1005],nr;
bool a[1005][1005],use[1005];
vector <int> urm[1005];
void afisare(int k)
{
    for(int i=1;i<=k;i++)
        g<<v[i]<<" ";
}
void bkt(int k)
{
    if(k==n+1)
    {
        sol++;
        if(sol==nr)
        {
            afisare(n);
            exit(EXIT_SUCCESS);
        }
    }
    else
    {
        for(int i=0;i<(int)urm[v[k-1]].size();i++)
        {
            if(use[urm[v[k-1]][i]]==0)
            {
                v[k]=urm[v[k-1]][i];
                use[urm[v[k-1]][i]]=1;
                bkt(k+1);
                v[k]=0;
                use[urm[v[k-1]][i]]=0;
            }
        }
    }
}
int main()
{
    int x,y,i,j;
    f>>n>>nr>>m;
    while(m--)
    {
        f>>x>>y;
        a[x][y]=a[y][x]=1;
    }
    for(i=0;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            if(a[i][j]==0)
                urm[i].push_back(j);
        }
    }
    bkt(1);
    return 0;
}