Advertisement
MeShootIn

Floyd-Warshall algorithm

Oct 22nd, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.72 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5. int main()
  6. {
  7.     int n, i, j, k, vBegin, vEnd;
  8.     scanf("%d", &n);
  9.     vector < vector <int> > arr(n, vector <int> (n));
  10.     const int MISS = (n * (n - 1)) / 2 + 1;
  11.     for(i = 0; i < n; i++)
  12.     {
  13.         for(j = 0; j < n; j++)
  14.         {
  15.             scanf("%d", &arr[i][j]);
  16.             if(!arr[i][j] && i != j) arr[i][j] = MISS;
  17.         }
  18.     }
  19.     for(k = 0; k < n; k++) for(i = 0; i < n; i++) for(j = 0; j < n; j++) arr[i][j] = min(arr[i][j], arr[i][k] + arr[k][j]);
  20.     scanf("%d%d", &vBegin, &vEnd);
  21.     vBegin--, vEnd--;
  22.     if(arr[vBegin][vEnd] == MISS) printf("-1");
  23.     else printf("%d", arr[vBegin][vEnd]);
  24.     return 0;
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement