Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int melodie[1 << 13][13];
  5. bool nu[14][14];
  6.  
  7. int main()
  8. {
  9.     ifstream in("playlist.in");
  10.     ofstream out("playlist.out");
  11.     int n, a, b, m;
  12.     in >> n >> m;
  13.  
  14.     while (m--) {
  15.         in >> a >> b;
  16.         nu[a - 1][b - 1] = nu[b - 1][a - 1] = 1;
  17.     }
  18.  
  19.     for (int i(0); i < n; i++)
  20.         melodie[1 << i][i] = -1;
  21.  
  22.     for (int mask(1); mask < (1 << n); mask++) {
  23.         if ((mask & -mask) == mask)
  24.             continue;
  25.         for (int i(0); i < n; i++) {
  26.             if (!(mask & (1 << i)))
  27.                 continue;
  28.             for (int j(0); j < n; j++) {
  29.                 if (!(mask & (1 << j)) || i == j)
  30.                     continue;
  31.                 if (melodie[mask ^ (1 << i)][j] != 0 && !nu[i][j]) {
  32.                     melodie[mask][i] = j + 1;
  33.                     break;
  34.                 }
  35.             }
  36.         }
  37.     }
  38.  
  39.     vector <int> ans;
  40.  
  41.     int mask, q;
  42.  
  43.     for (int i(0); i < n; i++) {
  44.         if (melodie[(1 << n) - 1][i]) {
  45.             mask = (1 << n) - 1, q = i;
  46.             break;
  47.         }
  48.     }
  49.  
  50.     while (mask) {
  51.         out << q + 1 << ' ';
  52.         int _q = q;
  53.         q = melodie[mask][q] - 1;
  54.         mask ^= (1 << _q);
  55.     }
  56.  
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement