Cod sursa(job #2542132)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 9 februarie 2020 15:42:36
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>

#define NMAX 100
#define INF 1<<30

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

int dist[1 + NMAX][1 + NMAX];

int main() {

	int N;

	fin >> N;

	for ( int x = 1; x <= N; ++x ) {
 		for ( int y = 1; y <= N; ++y ) {
 			fin >> dist[x][y];
 			if ( dist[x][y] == 0 && x != y )
 				dist[x][y] = INF;
 		}
 	}

 	for ( int k = 1; k <= N; ++k )
 		for ( int x = 1; x <= N; ++x )
 			for ( int y = 1; y <= N; ++y)
 				if ( dist[x][y] > dist[x][k] + dist[k][y] )
 					dist[x][y] = dist[x][k] + dist[k][y];

 	for ( int x = 1; x <= N; ++x ) {
 		for ( int y = 1; y <= N; ++y ) {	
 			if ( dist[x][y] == INF )
 				dist[x][y] = 0; 
 			fout << dist[x][y] << ' ';
 		}
 		fout << '\n';
 	}

 	return 0;	
}