Pagini recente » Cod sursa (job #2564263) | Cod sursa (job #2149674) | Cod sursa (job #1936300) | Cod sursa (job #2942868) | Cod sursa (job #1314432)
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
#define NMAX 105
#define INF 0x3f3f3f3f
#define get_min(a,b) ((a)<(b)?(a):(b))
using namespace std;
ifstream in ("royfloyd.in");
ofstream out ( "royfloyd.out" );
int Graph[NMAX][NMAX];
int N , M ;
int Sol[NMAX][NMAX];
void Read( void ){
int i , j ;
in >> N ;
for ( i = 1 ; i <= N ; ++i )
for ( j = 1 ; j <= N ; ++j )
in >> Graph[i][j] , Sol[i][j] = ( Graph[i][j] != 0 ? Graph[i][j] : INF );
}
void RoyFloyd ( void ) {
int i , j , k ;
for ( i = 1 ; i <= N ; ++i )
for ( k =1 ; k <= N ; ++k )
for ( j = 1 ; j <= N ; ++j )
if ( Sol[k][i] and Sol[i][j] and i !=j and k!= j and k != i )
Sol[k][j] = get_min( Sol[k][j] , Sol[k][i]+Sol[i][j]);
}
void Write ( void )
{
int i , j ;
for ( i = 1 ; i <= N ; ++i ){
for ( j = 1 ; j <= N ; ++j )
out << ( Sol[i][j] != INF ? Sol[i][j] : 0 ) << " ";
out << "\n";
}
}
int main(){
Read();
RoyFloyd();
Write();
return 0;
}