Cod sursa(job #2984229)

Utilizator etohirseCristi Cretu etohirse Data 23 februarie 2023 19:07:32
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

#define INF 0x3f3f3f3f

const int maxn = 101;

int n;
int a[maxn][maxn];

int main() {
  fin >> n;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      fin >> a[i][j];
      if (a[i][j] == 0) a[i][j] = INF;
    }
  }

  for (int k = 1; k <= n; ++k) {
    for (int i = 1; i <= n; ++i) {
      for (int j = 1; j <= n; ++j) {
        if (i != j && j != k && i != k && a[i][j] > a[i][k] + a[k][j])
          a[i][j] = a[i][k] + a[k][j];
      }
    }
  }

  for (int i = 1; i <= n; ++i, fout << '\n') {
    for (int j = 1; j <= n; ++j) {
      if (a[i][j] == INF)
        fout << "0 ";
      else
        fout << a[i][j] << ' ';
    }
  }
}