Cod sursa(job #1535768)

Utilizator pickleVictor Andrei pickle Data 25 noiembrie 2015 09:44:41
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
const int Nmax = 111;
const int INF = 1000*1000*1000;

int A[Nmax][Nmax];

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

  int N;
  fin >> N;
  for (int i = 0; i < N; i++)
  for (int j = 0; j < N; j++) {
    fin >> A[i][j];
    if (i != j && A[i][j] == 0)
      A[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 (A[i][j] > A[i][k] + A[k][j])
      A[i][j] = A[i][k] + A[k][j];
  }

  for (int i = 0; i < N; i++)
  for (int j = 0; j < N; j++)
    fout << (A[i][j] < INF ? A[i][j] : 0) << (j == N-1 ? '\n' : ' ');

  return 0;
}