Cod sursa(job #2638999)

Utilizator euyoTukanul euyo Data 30 iulie 2020 20:19:55
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

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

const int MaxN = 101;

int m[MaxN][MaxN];

static inline void royfloyd( int n ) {
  for ( int k = 1; k <= n; ++k ) {
	for ( int i = 1; i <= n; ++i ) {
	  for ( int j = 1; j <= n; ++j ) {
		if ( m[i][k] != 0 && m[k][j] != 0 && m[i][k] + m[k][j] < m[i][j] ) {
          m[i][j] = m[i][k] + m[k][j];
		}
	  }
	}
  }
}

int main() {
  int n;
  
  fin >> n;
  for ( int i = 1; i <= n; ++i ) {
	for ( int j = 1; j <= n; ++j ) {
	  fin >> m[i][j];
    }
  }
  royfloyd( n );
  for ( int i = 1; i <= n; ++i ) {
    for ( int j = 1; j <= n; ++j ) {
	  if ( i == j ) {
	    fout << "0 ";
	  } else {
	    fout << m[i][j] << " ";
	  }
	}
	fout << "\n";
  }
  fin.close();
  fout.close();
  return 0;
}