Cod sursa(job #2692831)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 3 ianuarie 2021 22:00:52
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <climits>

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 ] = INT_MAX;
        }
    }
    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 ] + v[ k ][ j ] < v[ i ][ j ] )
                    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 ] != INT_MAX )
                fout << v[ i ][ j ] << " ";
            else
                fout << "0 ";
        }
        fout << '\n';
    }
    fin.close();
    fout.close();
    return 0;
}