Pagini recente » Cod sursa (job #1930320) | Cod sursa (job #1501568) | Diferente pentru autumn-warmup-2007/solutii/runda-2 intre reviziile 56 si 19 | Cod sursa (job #1852079) | Cod sursa (job #2425589)
#include <cstdio>
using namespace std;
const int INFI = 0x3f3f3f;
const int NMAX = 105;
int V[ NMAX ][ NMAX ];
int main () {
freopen( "royfloyd.in", "r", stdin );
freopen( "royfloyd.out", "w", stdout );
int n, i, j, k;
scanf( "%d", &n );
for ( i = 1; i <= n; ++i ) {
for ( j = 1; j <= n; ++j ) {
scanf( "%d", &V[ i ][ j ] );
if ( V[ i ][ j ] == 0 )
//V[ i ][ j ] = INFI
;
}
}
for ( k = 1; k <= n; ++k ) {
for ( i = 1; i <= n; ++i ) {
for ( j = 1; j <= n; ++j ) {
if ( i != j && V[ i ][ k ] && V[ k ][ j ] ) {
if ( !V[ i ][ j ] || V[ i ][ j ] > V[ i ][ k ] + V[ k ][ j ] ) {
V[ i ][ j ] = V[ i ][ k ] + V[ k ][ j ];
}
}
}
}
}
for ( i = 1; i <= n; ++i ) {
for ( j = 1; j <= n; ++j ) {
printf( "%d ", (V[ i ][ j ]< INFI) ? V[ i ][ j ] : ( 0 ) );
}
printf( "\n" );
}
return 0;
}