Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int melodie[1 << 13][13];
- bool nu[14][14];
- int main()
- {
- ifstream in("playlist.in");
- ofstream out("playlist.out");
- int n, a, b, m;
- in >> n >> m;
- while (m--) {
- in >> a >> b;
- nu[a - 1][b - 1] = nu[b - 1][a - 1] = 1;
- }
- for (int i(0); i < n; i++)
- melodie[1 << i][i] = -1;
- for (int mask(1); mask < (1 << n); mask++) {
- if ((mask & -mask) == mask)
- continue;
- for (int i(0); i < n; i++) {
- if (!(mask & (1 << i)))
- continue;
- for (int j(0); j < n; j++) {
- if (!(mask & (1 << j)) || i == j)
- continue;
- if (melodie[mask ^ (1 << i)][j] != 0 && !nu[i][j]) {
- melodie[mask][i] = j + 1;
- break;
- }
- }
- }
- }
- vector <int> ans;
- int mask, q;
- for (int i(0); i < n; i++) {
- if (melodie[(1 << n) - 1][i]) {
- mask = (1 << n) - 1, q = i;
- break;
- }
- }
- while (mask) {
- out << q + 1 << ' ';
- int _q = q;
- q = melodie[mask][q] - 1;
- mask ^= (1 << _q);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement