Cod sursa(job #3252334)

Utilizator Victor5539Tanase Victor Victor5539 Data 29 octombrie 2024 11:10:08
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <iostream>
#include <fstream>

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

int n,k,m,v[1005],i,j,nr,cnt[1005],mat2[1005][1005];
bool ok=0,f[1005],mat[1005][1005];

void afis()
{
    for (int i=1; i<=n; i++)
        fout<<v[i]<<" ";
    fout<<"\n";

    ok=1;
}

void bkt(int pas)
{
    if (ok)
        return;

    if (pas==1)
    {
        for (int i=1; i<=n; i++)
        {
            f[i]=1;
            v[pas]=i;
            if (pas<n)
                bkt(pas+1);
            else
            {
                nr++;
                if (nr==k)
                    afis();
            }
            f[i]=0;
        }
    }
    else
    {
        for (int j=1; j<=cnt[v[pas-1]]; j++)
        {
            if (f[mat2[v[pas-1]][j]]==0)
            {
                f[mat2[v[pas-1]][j]]=1;
                  v[pas]=mat2[v[pas-1]][j];
                  if (pas<n)
                  bkt(pas+1);
                  else
                  {
                      nr++;
                      if (nr==k)
                      afis();
                  }
                  f[mat2[v[pas-1]][j]]=0;
            }
        }
    }
}

signed main()
{
    fin>>n>>k>>m;


    while (m)
    {
        int a,b;
        fin>>a>>b;
        mat[a][b]=1;
        mat[b][a]=1;
        m--;
    }

    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
            if (i!=j)
            {
                if (mat[i][j]==0)
                {
                    cnt[i]++;
                    mat2[i][cnt[i]]=j;
                }
            }
    }

    bkt(1);
    return 0;
}