Cod sursa(job #2692834)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 3 ianuarie 2021 22:04:45
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>

using namespace std;
ifstream fin( "royfloyd.in" );
ofstream fout( "royfloyd.out" );
const int nMax = 100;
int v[nMax][nMax];

int main() {
    int n;
    fin >> n;
    for ( int i = 0; i < n; i++ ) {
        for ( int j = 0; j < n; j++ ) {
            fin >> v[ i ][ j ];
            if ( v[ i ][ j ] == 0 && i != j )
                v[ i ][ j ] = -1;
        }
    }
    for ( int k = 0; k < n; k++ ) {
        for ( int i = 0; i < n; i++ ) {
            for ( int j = 0; j < n; j++ ) {
                if ( v[ i ][ k ] > -1 && v[ k ][ j ] > -1 && ( v[ i ][ k ] + v[ k ][ j ] < v[ i ][ j ] || v[ i ][ j ] < 0 ) )
                    v[ i ][ j ] = v[ i ][ k ] + v[ k ][ j ];
            }
        }
    }
    for ( int i = 0; i < n; i++ ) {
        for ( int j = 0; j < n; j++ ) {
            if ( v[ i ][ j ] > -1 )
                fout << v[ i ][ j ] << " ";
            else
                fout << "0 ";
        }
        fout << '\n';
    }
    fin.close();
    fout.close();
    return 0;
}