Cod sursa(job #2202575)

Utilizator denniscrevusDennis Curti denniscrevus Data 9 mai 2018 10:32:03
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#define NMAX 101

using namespace std;

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

int n, v[ NMAX ][ NMAX ];

void citire()
{
    f >> n;

    for( int i = 1; i <= n; i ++ )
        for( int j = 1; j <= n; j ++ )
            f >> v[ i ][ j ];
}

void roy_floyd_puternic()
{
    for( int z = 1; z <= n; z ++ )
        for( int i = 1; i <= n; i ++ )
            for( int j = 1; j <= n; j ++ )
                if( v[ i ][ z ] && v[ z ][ j ] && ( v[ i ][ z ] + v[ z ][ j ] < v[ i ][ j ] || !v[ i ][ j ] ) && ( i != j ) ) v[ i ][ j ] = v [ i ][ z ] + v[ z ][ j ];
}

void afisare()
{
    for( int i = 1; i <= n; i ++ )
    {
        for( int j = 1; j <= n; j ++ )
            g << v[ i ][ j ] << " ";
        g << "\n";
    }
}

int main()
{
    citire();
    roy_floyd_puternic();
    afisare();
}