Cod sursa(job #2217282)

Utilizator andrei.arnautuAndi Arnautu andrei.arnautu Data 29 iunie 2018 20:57:44
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
/**
  *  Worg
  */
#include <cstdio>
#include <algorithm>

FILE *fin = freopen("royfloyd.in", "r", stdin); FILE *fout = freopen("royfloyd.out", "w", stdout);

const int maxN = 100 + 5;

/*-------- Data --------*/
int n;
int royFloyd[maxN][maxN];
/*-------- --------*/

void ReadInput() {
  scanf("%d", &n);
  for(int i = 0; i < n; i++) {
    for(int j = 0; j < n; j++) {
      scanf("%d", &royFloyd[i][j]);
    }
  }
}

void RoyFloyd() {
  for(int k = 0; k < n; k++) {
    for(int i = 0; i < n; i++) {
      for(int j = 0; j < n; j++) {
        if(i == j || i == k || j == k) continue;

        royFloyd[i][j] = std::min(royFloyd[i][j], royFloyd[i][k] + royFloyd[k][j]);
      }
    }
  }
}

void WriteOutput() {
  for(int i = 0; i < n; i++) {
    for(int j = 0; j < n; j++) {
      printf("%d ", royFloyd[i][j]);
    }
    printf("\n");
  }
}

int main() {
  ReadInput();

  RoyFloyd();

  WriteOutput();

  return 0;
}