13713
unknown
c_cpp
2 years ago
1.2 kB
8
Indexable
#include <iostream> #include <limits.h> using namespace std; int flag[10003][10003]; int arr[10003][10003]; int main() { int N, E; int s, f, k; int u, v; int w; cin >> N >> E; cin >> s >> f >> k; for (int i = 0; i < 10003; i++) { for (int j = 0; j < 10003; j++) { arr[i][j] = INT_MAX; } } for (int i = 0; i < E; i++) { cin >> u >> v >> w; arr[u][v] = w; } for (int j = 0; j < N; j++) { flag[0][j] = arr[s][j]; } for (int i = 1; i <= k; i++) { for (int j = 0; j < N; j++) { flag[i][j] = flag[i-1][j]; for (int k = 0; k < N; k++) { if (flag[i-1][k] + arr[k][j] < flag[i][j] && flag[i-1][k] != INT_MAX && arr[k][j] != INT_MAX) { flag[i][j] = flag[i-1][k] + arr[k][j]; } } } } int min = flag[0][f]; for (int i = 1; i <= k; i++) { if (flag[i][f] < min) min = flag[i][f]; } if (min >= INT_MAX) cout << "-1\n"; else cout << min << endl; return 0; }
Editor is loading...