Cod sursa(job #2985587)

Utilizator victor_gabrielVictor Tene victor_gabriel Data 26 februarie 2023 17:45:03
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;

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

const int DIM = 1010;
int n, k, m, x, y;
int arr[DIM];
bool a[DIM][DIM], f[DIM], hasPrinted;

inline bool check(int step) {
    if (step == 1)
        return true;
    return !a[arr[step]][arr[step - 1]];
}

void backtrack(int step) {
    if (step == n + 1) {
        k--;
        if (k == 0) {
            for (int i = 1; i <= n; i++)
                fout << arr[i] << ' ';
            hasPrinted = true;
        }
    } else {
        for (int i = 1; i <= n; i++) {
            if (!f[i]) {
                arr[step] = i;
                f[i] = true;
                if (check(step))
                    backtrack(step + 1);
                if (hasPrinted) return;
                f[i] = false;
            }
        }
    }
}

int main() {
    fin >> n >> k >> m;
    for (int i = 1; i <= m; i++) {
        fin >> x >> y;
        a[x][y] = a[y][x] = true;
    }

    backtrack(1);

    return 0;
}