Advertisement
Nik_Perepelov

5 контест Даша

Oct 16th, 2021
1,000
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. // 1
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. int n;
  8. vector<vector<int>> graph(100, vector<int> (100));
  9.  
  10. void floid(){
  11.     for (int i = 0; i < n; i++){
  12.         for (int j = 0; j < n; j++){
  13.             for(int k = 0; k < n; k++){
  14.                 graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]);
  15.             }
  16.         }
  17.     }
  18. }
  19.  
  20. int main() {
  21.     cin >> n;
  22.     for (int i = 0; i < n; i++){
  23.         for (int j = 0; j < n; j++) {
  24.             cin >> graph[i][j];
  25.         }
  26.     }
  27.  
  28.     floid();
  29.  
  30.     for (int i = 0; i < n; i++){
  31.         for (int j = 0; j < n; j++) {
  32.             cout << graph[i][j] << ' ';
  33.         }
  34.         cout << endl;
  35.     }
  36.  
  37.     return 0;
  38. }
  39.  
  40. //2
  41. #include <iostream>
  42. #include <vector>
  43.  
  44. using namespace std;
  45.  
  46. int main() {
  47.     int n, m, k;
  48.     vector<int> v_from(100000);
  49.     vector<int> v_to(100000);
  50.     vector<int> v_weight(100000);
  51.     vector<int> d(100, 1000000000);
  52.     vector<int> d2(100, 1000000000);
  53.     int s, f;
  54.     cin >> n >> m >> k >> s >> f;
  55.     s--;
  56.     f--;
  57.  
  58.     for (int i = 0; i < m; i++){
  59.         cin >> v_from[i] >> v_to[i] >> v_weight[i];
  60.         v_from[i]--;
  61.         v_to[i]--;
  62.     }
  63.  
  64.     d[s] = 0;
  65.     d2[s] = 0;
  66.     for(int i = 0; i < k; i++){
  67.         for(int j = 0; j < m; j++){
  68.             if (d[v_from[j]] < 1000000000) {
  69.                 d2[v_to[j]] = min(d2[v_to[j]], d[v_from[j]] + v_weight[j]);
  70.             }
  71.         }
  72.         d = d2;
  73.     }
  74.  
  75.     if (d[f] == 1000000000){
  76.         cout << -1;
  77.     } else {
  78.         cout << d[f];
  79.     }
  80.  
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement