Cod sursa(job #874446)

Utilizator bogdan353Costea Bogdan bogdan353 Data 8 februarie 2013 15:00:20
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>

#define inf 0x3f3f3f3f

using namespace std;

int  A [ 101 ][ 101 ] , N ;

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

    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 && i != j )
            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( A[ i ][ k ] == inf || A[ k ][ j ] == inf )
                continue;
                if( i == j) continue;

                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++)
        g << A[ i ][ j ]<<" ";
        g <<"\n";
    }

    return 0;
}