Advertisement
rembocoder

Untitled

Mar 16th, 2023
453
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define int int64_t
  6.  
  7. const int mod = 998244353;
  8.  
  9. vector<bool> used;
  10. vector<vector<pair<int, int>>> g;
  11. vector<bool> neg_inf;
  12.  
  13. void dfs(int v) {
  14.     used[v] = true;
  15.     neg_inf[v] = true;
  16.     for (auto [to, len]: g[v]) {
  17.         if (!used[to]) {
  18.             dfs(to);
  19.         }
  20.     }
  21. }
  22.  
  23. int32_t main() {
  24.     ios_base::sync_with_stdio(false);
  25.     cin.tie(0); cout.tie(0);
  26.     int n, m;
  27.     cin >> n >> m;
  28.     g.resize(n);
  29.     for (int i = 0; i < m; i++) {
  30.         int a, b, c;
  31.         cin >> a >> b >> c;
  32.         a--; b--;
  33.         g[a].push_back({b, c});
  34.         g[b].push_back({a, c});
  35.     }
  36.     int st = 0;
  37.     vector<int> d(n, 2e18);
  38.     d[st] = 0;
  39.     // dp(i)[v] = shortest path from st to v if the path contains no more than i edges
  40.     for (int i = 0; i < n - 1; i++) {
  41.         for (int v = 0; v < n; v++) {
  42.             for (auto [to, len]: g[v]) {
  43.                 d[to] = min(d[to], d[v] + len);
  44.             }
  45.         }
  46.     }
  47.     neg_inf.assign(n, false);
  48.     for (int v = 0; v < n; v++) {
  49.         for (auto [to, len]: g[v]) {
  50.             if (d[to] > d[v] + len) {
  51.                 neg_inf[to] = true;
  52.             }
  53.         }
  54.     }
  55.     used.assign(n, false);
  56.     for (int i = 0; i < n; i++) {
  57.         if (neg_inf[i] && !used[i]) {
  58.             dfs(i);
  59.         }
  60.     }
  61.     for (int i = 0; i < n; i++) {
  62.         if (neg_inf[i]) {
  63.             cout << "-inf ";
  64.         } else {
  65.             cout << d[i] << ' ';
  66.         }
  67.     }
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement