Cod sursa(job #2471280)

Utilizator stormy_weatherelena cristina stormy_weather Data 10 octombrie 2019 18:04:06
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;

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

void generate_friendly_perm(int pos, int n, int k, vector<int> &cur_perm, vector<vector <int>> &enemies, vector<int> &options, int &count) {
  if (pos == n) {
    count++;
    if (count == k) {
      for (int i = 0; i < n; i++)
        fout << cur_perm[i] << " ";
      fout << "\n";
    }
    return;
  }
  if (count < k) {
    for (int i = 1; i <= n; i++) {
      if (options[i] == 1 && (pos == 0 || (pos > 0 && enemies[cur_perm[pos - 1]][i] == 0))) {
        options[i] = 0;
        cur_perm[pos] = i;
        generate_friendly_perm(pos + 1, n, k, cur_perm, enemies, options, count);
        options[i] = 1;
      }
    }
  }
  return;
}

int main() {
  int n, k, m;
  fin >> n >> k >> m;

  vector<vector <int>> enemies(n + 1, vector<int>(n + 1, 0));
  for (int i = 0; i < m; i++) {
    int a, b;
    fin >> a >> b;
    enemies[a][b] = 1;
    enemies[b][a] = 1;
  }

  vector<int> cur_perm(n), options(n + 1, 1);
  options[0] = 0;
  int count = 0;
  generate_friendly_perm(0, n, k, cur_perm, enemies, options, count);
  return 0;
}