Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- struct vertex {
- int num;
- int weight;
- };
- #define int long long
- void FordBellman() {
- int N, m, b, k, s, f;
- vertex a;
- cin >> N >> m >> k >> s >> f;
- vector<vector<vertex>> g(N);
- for (int i = 0; i < m; ++i) {
- cin >> b >> a.num >> a.weight;
- a.num--;
- g[b - 1].push_back(a);
- }
- vector<int> d(N, 10e12);
- d[s - 1] = 0;
- for (int i = 0; i < k; ++i) {
- auto d_new = d;
- for (int j = 0; j < N; ++j) {
- for (auto [to, w] : g[j]) {
- if (d[j] != 10e12)
- d_new[to] = min(d[to], d[j] + w);
- }
- }
- d = d_new;
- }
- std::cout << d[f - 1];
- }
- int32_t main() {
- FordBellman();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement