Mai intai trebuie sa te autentifici.
Cod sursa(job #2425586)
| Utilizator | Data | 24 mai 2019 21:58:13 | |
|---|---|---|---|
| Problema | Floyd-Warshall/Roy-Floyd | Scor | 50 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.99 kb |
#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 ( 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;
}
