Advertisement
achulkov2

Untitled

Sep 18th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <map>
  7. #include <set>
  8. #include <deque>
  9.  
  10. using namespace std;
  11.  
  12. const int INF = static_cast<int>(1e9);
  13.  
  14. int main() {
  15.     int n;
  16.     cin >> n;
  17.     vector<vector<int>> m(n, vector<int>(n));
  18.     for (int i = 0; i < n; ++i) {
  19.         for (int j = 0; j < n; ++j) {
  20.             cin >> m[i][j];
  21.         }
  22.     }
  23.     vector<int> perm;
  24.     for (int i = 0; i < n; ++i) {
  25.         perm.push_back(i);
  26.     }
  27.     int best = INF;
  28.     do {
  29.         int res = 0;
  30.         bool ok = true;
  31.         perm.push_back(perm[0]);
  32.         for (int i = 0; i < n; ++i) {
  33.             if (m[perm[i]][perm[i + 1]] == 0) {
  34.                 ok = false;
  35.                 break;
  36.             }
  37.             res += m[perm[i]][perm[i + 1]];
  38.         }
  39.         perm.pop_back();
  40.         if (ok && res < best) {
  41.             best = res;
  42.         }
  43.     } while (next_permutation(perm.begin(), perm.end()));
  44.     if (best == INF) {
  45.         cout << "-1\n";
  46.     } else {
  47.         cout << best << "\n";
  48.     }
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement