Cod sursa(job #1922742)

Utilizator felipeGFilipGherman felipeG Data 10 martie 2017 18:41:15
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#define inf 1 << 29
using namespace std;

ifstream f ("royfloyd.in");
ofstream g ("royfloyd.out");

int a[ 110 ][ 110 ], n;

int main()
{
    f >> n;

    for ( int i = 1; i <= n; ++ i )
    {
        for ( int j = 1; j <= n; ++ j )
        {
            f >> a[ i ][ j ];
            if ( a[ i ][ j ] == 0 )
                a[ i ][ j ] = inf;
        }
    }

    for ( int k = 1; k <= n; ++ k )
        for ( int i = 1; i <= n; ++ i )
           for ( int j = 1; j <= n; ++ j )
               if ( i != j && i != k && j != k )
               {
                   a[ i ][ j ] = min( a[ i ][ j ], a[ i ][ k ] + a[ k ][ j ] );
               }

    for ( int i = 1; i <= n; ++ i )
    {
        for ( int j = 1; j <= n; ++ j )
        {
            if ( a[ i ][ j ] >= inf )
                a[ i ][ j ] = 0;
            g << a[ i ][ j ] << " ";
        }
        g << endl;
    }

    return 0;
}