Cod sursa(job #1220857)

Utilizator diana97Diana Ghinea diana97 Data 18 august 2014 18:45:37
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream f ("dusman.in");
ofstream g ("dusman.out");

const int NMAX = 1000 + 1;
int n, m, k;
int p[NMAX];
int v[NMAX][NMAX];

void citeste() {
    f >> n >> k >> m;
    int a, b;
    for (int i = 1; i <= m; i++)
        f >> a >> b,
        v[a][b] = v[b][a] = 1;
}

bool ok() {
    for (int i = 1; i < n; i++)
        if (v[ p[i] ][ p[i + 1] ] == 1) return false;
    return true;
}

void scrie () {
    for (int i = 1; i <= n; i++) g << p[i] << ' ';
    g << '\n';
}

void rezolva() {
    for (int i = 1; i <= n; i++) p[i] = i;
    int i = 0;
    if (ok()) i++;
    do {
        if (ok()) i++;
    } while (next_permutation(p + 1, p + n + 1) && i != k);
    scrie();
}

int main() {
    citeste();
    rezolva();
    return 0;
}