Cod sursa(job #2125289)

Utilizator Gl0WCula Stefan Gl0W Data 8 februarie 2018 12:46:41
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>

using namespace std;

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

pair <int, int> v[3005];

int n, x[1005], kk, m;

int cont(int k){
    for(int i = 1; i < k; i++){
        if(x[k] == x[i]){
            return 0;
        }
    }
    return 1;
}

void f(int k){
    if(k > n){
        int ok = 1;
        for(int i = 1; i <= m; i++){
            for(int j = 1; j <= n; j++){
                if(x[j] == v[i].first){
                    if(x[j - 1] == v[i].second || x[j + 1] == v[i].second){
                        ok = 0;
                    }
                    break;
                }
            }
        }
        if(ok == 1){
            kk--;
        }
        if(ok == 1 && kk == 0){
            for(int i = 1; i <= n; i++){
                fout<<x[i]<<" ";
            }
            fout<<"\n";
        }
    }
    else{
        for(int i = 1; i <= n; i++){
            x[k] = i;
            if(cont(k)){
                f(k + 1);
            }
        }
    }
}

int main()
{
    fin>>n>>kk>>m;
    for(int i = 1; i <= m; i++){
        fin>>v[i].first>>v[i].second;
    }
    f(1);
    return 0;
}