Cod sursa(job #3366610)

Utilizator andreicapyCapitanescu Andrei andreicapy Data 2 octombrie 2026 18:37:09
Problema Dusman Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.59 kb
///sursa provizorie

#include <fstream>

using namespace std;

ifstream fin("dusman.in");
ofstream fout("dusman.out");
int n,ciclu,k,m,a,b;
int dusmani[1010][3];
int v[1000];

int verif2(int pas){
    for(int i=1;i<pas;i++){
        if(v[pas]==v[i]){
            return 0;
        }
    }
    return 1;
}

int verif(int pas){
        if(pas>1){

            for(int i=1;i<=3;i++){
                if(v[pas-1]==dusmani[v[pas]][i] ){
                    return 0;
                }
            }

            return 1;
        }else{
            return 1;
        }
}

void backtrack(int pas){
        if(pas==n+1){
            ciclu++;
            if(ciclu==k){
                for(int i=1;i<=n;i++){
                    fout<<v[i]<<" ";
                }
                fout<<endl;
            }
        }else{
            for(int i=1;i<=n;i++){
                v[pas]=i;
                if(verif(pas)==1 && verif2(pas)==1){
                    backtrack(pas+1);
                }
            }
        }
}


int main()
{
    fin>>n>>k>>m;
    for(int i=1;i<=m;i++){
        fin>>a>>b;
        if(dusmani[a][1]==0){
            dusmani[a][1]=b;
            dusmani[b][1]=a;
        }else{
            if(dusmani[a][1]!=0 && dusmani[a][2]==0){
                dusmani[a][2]=b;
                dusmani[b][2]=a;
            }else{
                if(dusmani[a][2]!=0 && dusmani[a][3]==0){
                    dusmani[a][3]=b;
                    dusmani[b][3]=a;
                }
            }
        }
    }

    backtrack(1);
    return 0;
}