Cod sursa(job #2416317)

Utilizator pickleVictor Andrei pickle Data 27 aprilie 2019 12:57:56
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <bits/stdc++.h>

#define rep(i, n) for(int i = 0; i < n; i++)
#define REP(i,a,b) for(int i = a; i < b; i++)

using namespace std;
const int INF = 0x3f3f3f3f;
const int MaxN = 101;

int A[101][101], B[101][101];

int main(void) {
  freopen("royfloyd.in", "r", stdin);
  freopen("royfloyd.out", "w", stdout);

  rep(i, MaxN)
  rep(j, MaxN) {
    A[i][j] = INF;
  }

  int N;
  cin >> N;

  rep(i,N)
  rep(j,N)
    cin >> A[i][j];

  rep(i, N)
  REP(j,i+1, N) {
    if (!A[i][j]) { A[i][j] = INF; }
    if (!A[j][i]) { A[j][i] = INF; }
  }

  rep(k, N)
  rep(i, N)
  rep(j, N) {
    if (A[i][j] > A[i][k] + A[k][j]) {
      A[i][j] = A[i][k] + A[k][j];
    }
  }

  rep(i, N) {
    rep(j, N) {
      if (A[i][j] == INF) {
        A[i][j] = 0;
      }
      cout << A[i][j] << ' ';
    }
    cout << endl;
  }

  return 0;
}