Cod sursa(job #2856695)

Utilizator LuciBBadea Lucian LuciB Data 24 februarie 2022 11:32:51
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
const int NMAX = 100, INF = 100 * 100 * 1000 + 1;

int rf[NMAX][NMAX];

int main() {
  int n;
  fin >> n;
  for(int i = 0; i < n; i++) {
    for(int j = 0; j < n; j++) {
      int cost;
      fin >> cost;
      rf[i][j] = cost;
      if(cost == 0) rf[i][j] = INF;
    }
  }
  for(int i = 0; i < n; i++) rf[i][i] = 0;
  for(int k = 0; k < n; k++)
    for(int i = 0; i < n; i++)
      for(int j = 0; j < n; j++)
        if(rf[i][k] != INF && rf[k][j] != INF)
          rf[i][j] = min(rf[i][j], rf[i][k] + rf[k][j]);
  for(int i = 0; i < n; i++) {
    for(int j = 0; j < n; j++)
      fout << rf[i][j] << ' ';
    fout << endl;
  }
  return 0;
}