Cod sursa(job #2889734)

Utilizator Asgari_ArminArmin Asgari Asgari_Armin Data 13 aprilie 2022 10:35:57
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 100;
const int INF = (1 << 29);

int dp[NMAX + 2][NMAX + 2];

int main() {
  int n, i, j, k;

  fin >> n;

  for (i = 1; i <= n; ++i)
    for (j = 1; j <= n; ++j) {
      fin >> dp[i][j];

      if (dp[i][j] == 0 && i != j)
        dp[i][j] = INF;
    }

  for (k = 1; k <= n; ++k)
    for (i = 1; i <= n; ++i)
      for (j = 1; j <= n; ++j)
        dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);

  for (i = 1; i <= n; ++i) {
    for (j = 1; j <= n; ++j) {
      if (dp[i][j] == INF)
        dp[i][j] = 0;
      fout << dp[i][j] << " ";
    }
    fout << "\n";
  }
  return 0;
}