Alex_tz307

ROY-FLOYD

Sep 11th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream f ("roy-floyd.in");
  6. ofstream g ("roy-floyd.out");
  7.  
  8. int n, m, a[128][128], x, y, C;
  9.  
  10. void Read () {
  11.     f >> n >> m;
  12.     while (m --) {
  13.         f >> x >> y >> C;
  14.         a[x][y] = C;
  15.     }
  16. }
  17.  
  18. void RF () {
  19.     for (int k = 1; k <= n; ++k)
  20.     for (int i = 1; i <= n; ++i)
  21.     for (int j = 1; j <= n; ++j)
  22.     if ((a[i][j] > a[i][k] + a[k][j] || a[i][j] == 0) && a[i][k] && a[k][j] && i != j)
  23.     a[i][j] = a[i][k] + a[k][j];
  24. }
  25.  
  26. void Solve () {
  27.     RF ();
  28.     for (int i = 1; i <= n; ++i, g << '\n')
  29.     for (int j = 1; j <= n; ++j)
  30.     if (i != j && a[i][j] == 0) g << "-1 ";
  31.     else g << a[i][j] << ' ';
  32. }
  33.  
  34. void Close () {
  35.     f.close();
  36.     g.close();
  37. }
  38.  
  39. int main() {
  40.     Read ();
  41.     Solve ();
  42.     Close ();
  43.     return 0;
  44. }
  45.  
Add Comment
Please, Sign In to add comment