Cod sursa(job #2191620)

Utilizator vlad.ulmeanu30Ulmeanu Vlad vlad.ulmeanu30 Data 3 aprilie 2018 10:51:30
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define maxn 100

using namespace std;

int ad[maxn+5][maxn+5];

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

  int n;

  fin >> n;

  int i, j;

  for ( i = 0; i < n; i++ )
    for ( j = 0; j < n; j++ )
      fin >> ad[i][j];

  int k;

  for ( k = 0; k < n; k++ )
    for ( i = 0; i < n; i++ )
      for ( j = 0; j < n; j++ )
        if ( ad[i][k] > 0 && ad[k][j] > 0 && ( ad[i][k] + ad[k][j] < ad[i][j] || ( ad[i][j] == 0 && i != j ) ) )
          ad[i][j] = ad[i][k] + ad[k][j];

  for ( i = 0; i < n; i++, fout.put ( '\n' ) )
    for ( j = 0; j < n; j++ )
      fout << ad[i][j] << ' ';

  fin.close ();
  fout.close ();

  return 0;
}