Cod sursa(job #2425583)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 24 mai 2019 21:54:52
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 ] < INFI && 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;

}