Cod sursa(job #2425589)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 24 mai 2019 22:02:04
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 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 ( 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;

}