Bobert0032

Pink-Floyd

Jan 25th, 2023
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. // #pragma GCC optimize("O3,unroll-loops")
  2. // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
  3.  
  4. #include <unordered_map>
  5. #include <algorithm>
  6. #include <iostream>
  7. #include <cstring>
  8. #include <string>
  9. #include <random>
  10. #include <vector>
  11. #include <queue>
  12. #include <cmath>
  13. #include <map>
  14. #include <set>
  15.  
  16. using namespace std;
  17.  
  18. typedef long long ll;
  19. typedef long double ld;
  20.  
  21. typedef vector<int> vi;
  22.  
  23. #define sz(a) (int)a.size()
  24. #define all(a) a.begin(), a.end()
  25.  
  26. int SQR(int x) {return x * x;}
  27. int SQRT(int n) {int l = 0, r = n + 1; while (r - l > 1) {int m = (l + r) / 2; if (m * m <= n) {l = m; } else {r = m;}} return l; }
  28. int POW(int x, int p) {int ans = 1; while (p-->0) {ans *= x; }return ans; }
  29. int CEIL(int x, int d) {return (x + d - 1) / d;}
  30. int MODD(int x, int md) {return (x + md) % md; }
  31. int GCD(int a, int b) {while (a) {b %= a; swap(a, b); } return b; }
  32. ld LOG(int base, int x) {return log2(x) / log2(base); }
  33.  
  34. mt19937 rnd(1);
  35.  
  36. const int MINF = -1e9;
  37.  
  38. void solve() {
  39.     int n, m;
  40.     cin >> n >> m;
  41.     vector<vector<int>> G(n, vector<int>(n, MINF));
  42.     for (int i = 0; i < m; ++i) {
  43.         int a, b, w;
  44.         cin >> a >> b >> w;
  45.         a--;
  46.         b--;
  47.         G[a][b] = w;
  48.     }
  49.     for (int k = 0; k < n; ++k) {
  50.         for (int i = 0; i < n; ++i) {
  51.             for (int j = 0; j < n; ++j) {
  52.                 if (G[i][k] > MINF && G[k][j] > MINF) {
  53.                     G[i][j] = max(G[i][j], G[i][k] + G[k][j]);
  54.                 }
  55.             }
  56.         }
  57.     }
  58.     vector<vector<int>> Gn = G;
  59.     for (int k = 0; k < n; ++k) {
  60.         for (int i = 0; i < n; ++i) {
  61.             for (int j = 0; j < n; ++j) {
  62.                 if (Gn[i][k] > MINF && Gn[k][j] > MINF) {
  63.                     Gn[i][j] = max(Gn[i][j], Gn[i][k] + Gn[k][j]);
  64.                 }
  65.             }
  66.         }
  67.     }
  68.     if (Gn[0][n - 1] != G[0][n - 1]) {
  69.         cout << ":)";
  70.         return;
  71.     }
  72.     if (G[0][n - 1] == MINF) {
  73.         cout << ":(";
  74.         return;
  75.     }
  76.     cout << G[0][n - 1];
  77. }
  78.  
  79. int32_t main() {
  80.     ios::sync_with_stdio(0);
  81.     cin.tie(0);
  82.     cout.tie(0);
  83.     // freopen("input.txt", "r", stdin);
  84.     // freopen("output.txt", "w", stdout);
  85.     int t = 1;
  86.     // cin >> t;
  87.     while (t-->0) {
  88.         solve();
  89.     }
  90.     return 0;
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment