Cod sursa(job #3210905)

Utilizator LucaSeriSeritan Luca LucaSeri Data 7 martie 2024 17:53:20
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()

using namespace std;

typedef long long ll;
typedef pair<int,int> pi;
typedef vector<int> vi;
typedef pair<ll, ll> pll;

int main() {
  #ifdef BLAT
    freopen("stdin", "r", stdin);
    freopen("stderr", "w", stderr);
  #else 
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);
  #endif

  cin.tie(0)->sync_with_stdio(0);

  srand(time(NULL));

  int n;
  cin >> n;

  vector<vi> d(n, vi(n));

  rep(i,0,n)
    rep(j,0,n)
      cin >> d[i][j];

  rep(k,0,n)
    rep(i,0,n)
      rep(j,0,n)
        if (d[i][k] && d[k][j])
          d[i][j] = min(d[i][j] == 0 && i != j ? (int)1e9 : d[i][j], d[i][k] + d[k][j]);

  rep(i,0,n) {
    rep(j,0,n)
      cout << d[i][j] << ' ';
    cout << '\n';
  }

  return 0;
}