Cod sursa(job #1128068)

Utilizator superman_01Avramescu Cristian superman_01 Data 27 februarie 2014 15:11:31
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>

#define NMAX 105
#define get_max(a,b) ((a)>(b)?(a):(b))
#define get_min(a,b) ((a)<(b)?(a):(b))

using namespace std;

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

int Cost[NMAX][NMAX] , Sol[NMAX][NMAX];
int N;

int main ( void )
{
	int i , j , k ;
	in >> N ;
	for ( i = 1 ; i <= N ; ++i )
		for ( j = 1 ; j <= N ; ++j )
			in >> Cost[i][j];
	for ( i = 1 ; i <= N ; ++i )
		for ( j = 1 ; j  <= N ; ++j )
			for ( k = 1 ; k <= N ; ++k )
				if ( Cost[i][k] and Cost[k][j] )
			Cost[i][j] = get_min ( Cost[i][j] , Cost[i][k] + Cost[k][j] );
	for ( i = 1 ; i <= N ; ++i , out << "\n" )
		for ( j = 1 ; j <= N ; ++j )
			out << Cost[i][j] << " ";
	in.close();
	out.close();
	return 0 ;
}