Advertisement
allia

флойд

Dec 27th, 2020
938
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. const int INT = 10000000;
  5. class Graph
  6. {
  7.   private:
  8.   bool orient;
  9.   int n, **arr, shet_reber, **d;
  10.  
  11.   public:
  12.   Graph (int **matrix, int x, int shet)
  13.   {
  14.     n = x;
  15.     arr = matrix;
  16.     d = matrix;
  17.     shet_reber = shet;
  18.   }
  19.   void minpath();
  20.   int get_length_path(int x, int y);
  21. };
  22.  
  23. void Graph::minpath()
  24. {
  25.   for (int l = 0; l < n; l++)
  26.     for (int i = 0; i < n; i++)
  27.       if (d[i][l] < INT)
  28.         for (int j = 0; j < n; j++)
  29.           d[i][j] = min(d[i][j], d[i][l] + d[l][j]);
  30. }
  31.  
  32. int Graph::get_length_path(int x, int y)
  33. {
  34.  int dlina = 0;
  35.   minpath();
  36.  
  37.  if (d[x][y] == INT)
  38.   dlina = -1;
  39.  else dlina = d[x][y];
  40.  
  41.  return dlina;
  42. }
  43.  
  44. int main()
  45. {
  46.  int n, shet_reber = 0, x, y;
  47.  cin >> n >> x >> y;
  48.  
  49. int **arr = new int*[n];
  50.  
  51. for ( int i = 0; i < n; i++)
  52.      arr[i] = new int[n];
  53.    
  54. for (int i = 0; i < n; i++)
  55.   for (int j = 0; j < n; j++)  
  56.      {
  57.          cin >> arr[i][j];
  58.          if (arr[i][j] == -1)
  59.           arr[i][j] = INT;
  60.          shet_reber++;
  61.       }
  62.  
  63.  Graph object(arr, n, shet_reber);
  64.  
  65.  cout << object.get_length_path(x-1, y-1);
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement