Pagini recente » Cod sursa (job #1102593) | Cod sursa (job #2810817) | Cod sursa (job #716409) | Cod sursa (job #1395181) | Cod sursa (job #1314428)
#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] )
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;
}