Advertisement
mfgnik

Untitled

Nov 26th, 2020
656
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. struct vertex {
  7.     int num;
  8.     int weight;
  9. };
  10.  
  11.  
  12. #define int long long
  13. void FordBellman() {
  14.     int N, m, b, k, s, f;
  15.     vertex a;
  16.     cin >> N >> m >> k >> s >> f;
  17.     vector<vector<vertex>> g(N);
  18.     for (int i = 0; i < m; ++i) {
  19.         cin >> b >> a.num >> a.weight;
  20.         a.num--;
  21.         g[b - 1].push_back(a);
  22.     }
  23.     vector<int> d(N, 10e12);
  24.     d[s - 1] = 0;
  25.     for (int i = 0; i < k; ++i) {
  26.         auto d_new = d;
  27.         for (int j = 0; j < N; ++j) {
  28.             for (auto [to, w] : g[j]) {
  29.                 if (d[j] != 10e12)
  30.                     d_new[to] = min(d[to], d[j] + w);
  31.             }
  32.         }
  33.         d = d_new;
  34.  
  35.     }
  36.     std::cout << d[f - 1];
  37. }
  38. int32_t main() {
  39.     FordBellman();
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement