Cod sursa(job #2283381)

Utilizator vlad.ulmeanu30Ulmeanu Vlad vlad.ulmeanu30 Data 15 noiembrie 2018 14:48:57
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
#define maxn 100
#define INF INT_MAX / 2

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, k;

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

  for ( k = 0; k < n; k++ )
    for ( i = 0; i < n; i++ )
      for ( j = 0; j < n; j++ )
        if ( i != j && ad[i][j] > ad[i][k] + ad[k][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++ )
      if ( ad[i][j] == INF )
        fout << 0 << ' ';
      else
        fout << ad[i][j] << ' ';

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

  return 0;
}