Cod sursa(job #2479992)

Utilizator stormy_weatherelena cristina stormy_weather Data 24 octombrie 2019 18:46:27
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;

int main() {

  #ifdef INFOARENA
  ifstream cin("royfloyd.in");
  ofstream cout("royfloyd.out");
  #endif

  int n; cin >> n;

  vector<vector <int>> a(n, vector<int>(n));
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      cin >> a[i][j];

  vector<vector <int>> d = a;
  for (int k = 0; k < n; k++) {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        if (i != j) {
          int new_dist = d[i][k] + d[k][j];
          if (d[i][j] == 0) {
            d[i][j] = new_dist;
          } else {
            d[i][j] = min(d[i][j], new_dist);
          }
        }
      }
    }
  }

  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++)
      cout << d[i][j] << " ";
    cout << "\n";
  }

  return 0;
}