Cod sursa(job #2575134)

Utilizator Turturica_DorinTurturica Dorin Turturica_Dorin Data 6 martie 2020 11:48:17
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>

#define inf ( (1<<30) - 1 )

using namespace std;
ifstream fin ("royfloyd.in");
ofstream fout ("royfloyd.out");

int n, m, i, k, j, a[ 105 ][ 105 ], x, y, c;

int main()
{
    fin>> n;
    for ( i = 1; i <= n; i++ )
    {
        for ( j = 1; j <= n; j++ )
        {
            fin >> a[ i ][ j ];
            if ( a[ i ][ j ] == 0 )
                a[ i ][ j ] = inf;
        }
    }
    for ( k = 1; k <= n; k++ )
    {
        for ( i = 1; i <= n; i++ )
        {
            for ( j = 1; j <= n; j++ )
            {
                if ( a[ i ][ j ] > a[ i ][ k ] + a[ k ][ j ] && i != j )
                    a[ i ][ j ] = a[ i ][ k ] + a[ k ][ j ];
            }
        }
    }
    for ( i = 1; i <= n; i++ )
    {
        for ( j = 1; j <= n; j++ )
        {
            if ( a[ i ][ j ] < inf )
                fout<< a[ i ][ j ] << ' ';
            else
                fout << 0 << ' ';
        }
        fout<< '\n';
    }
}