Cod sursa(job #3344146)

Utilizator DariusJohnDarius Dumitrescu DariusJohn Data 1 martie 2026 14:29:25
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
const int inf = 1e9;
int main() {
  int N;
  fin >> N;
  vector<vector<int>> dist(N, vector<int>(N, inf));
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      fin >> dist[i][j];
      if (dist[i][j] == 0 && i != j)
        dist[i][j] = inf;
    }
  }

  for (int k = 0; k < N; k++) {
    for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++) {
        if (dist[i][k] == inf || dist[k][j] == inf)
          continue;
        dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
      }
    }
  }

  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++)
      fout << dist[i][j] << " ";
    fout << '\n';
  }
  return 0;
}