Cod sursa(job #3328926)

Utilizator DariusJohnDarius Dumitrescu DariusJohn Data 11 decembrie 2025 09:40:17
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int main() {
  int n;
  fin >> n;
  vector<vector<int>> matrix(n, vector<int>(n, 0));
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      fin >> matrix[i][j];
  for (int k = 0; k < n; k++)
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
        if (matrix[i][k] && matrix[k][j]) {
          if (matrix[i][j] == 0 && i != j)
            matrix[i][j] = matrix[i][k] + matrix[k][j];
          else
            matrix[i][j] = min(matrix[i][j], matrix[i][k] + matrix[k][j]);
        }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++)
      fout << matrix[i][j] << " ";
    fout << "\n";
  }
}