Cod sursa(job #3325211)

Utilizator teodora_mihaiTeodora Mihai teodora_mihai Data 24 noiembrie 2025 22:45:26
Problema Dusman Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
using namespace std;
int k=1,st[100001],i,n,m,K,as,d[10001][3],nr;
ifstream fin("dusman.in");
ofstream fout("dusman.out");
void init()
{
    st[k]=0;
}
bool succesor()
{
    if(st[k]<n)
    {
        st[k]++;
        return 1;
    }
    else return 0;
}
bool valid()
{
    int i;
    for(i=1;i<=k-1;i++)
    {
        if(st[k]==st[i])
            return 0;

    }
    if(i>1 && k>1)
        for(int j=1;j<=m;j++)
        {
            if(st[k]==d[j][1] && st[k-1]==d[j][2] || st[k]==d[j][2] && st[k-1]==d[j][1])
                return 0;
        }
    return 1;
}
bool solutie()
{
    return k==n;
}
void tipar()
{
    int i;
    for(i=1;i<=k;i++)
        fout<<st[i]<<' ';
    fout<<endl;
}
int main()
{
    fin>>n>>K>>m;
    for(i=1;i<=m;i++)
        fin>>d[i][1]>>d[i][2];
    init();
    while(k>0)
    {
        do
        {
            as=succesor();
        }while(as && !valid());
        if(as)
            if(solutie())
            {
                nr++;
                if(nr==K)
                {
                    tipar();
                    return 0;
                }
            }
            else
            {
                k++;
                init();
            }
        else k--;
    }
    return 0;
}