Cod sursa(job #2543976)

Utilizator memecoinMeme Coin memecoin Data 11 februarie 2020 17:54:38
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <set>
#include <map>
#include <string.h>
#include <queue>
#include <stack>

#define INF 0x3f3f3f3f

using namespace std;

#ifdef DEBUG
string name = "data";
#else
string name = "dusman";
#endif

ifstream fin(name + ".in");
ofstream fout(name + ".out");

int n, p, m;

bool isEnemy[1024][1024];

int gsol = 0;
bool done;

int sol[1024];
bool used[1024];

void solve(int k) {
    if (k > n) {
        gsol++;
        if (gsol == p) {
            for (int i = 1; i <= k - 1; ++i) {
                fout << sol[i] << " ";
            }
            done = true;
            return;
        }
    }
    
    for (int i = 1; i <= n; ++i) {
        if (done) {
            break;
        }
        
        if (used[i]) {
            continue;
        }
        
        if (isEnemy[sol[k-1]][i]) {
            continue;
        }
        
        sol[k] = i;
        used[i] = true;
        solve(k + 1);
        used[i] = false;
    }
}

int main() {
    
    fin >> n >> p >> m;
    
    for (int i = 0; i < m; ++i) {
        int x,y;
        fin >> x >> y;
        isEnemy[x][y] = true;
        isEnemy[y][x] = true;
    }
    
    solve(1);
    
    return 0;
}