Cod sursa(job #2193681)

Utilizator bogdanpaunFMI Paun Bogdan Gabriel bogdanpaun Data 10 aprilie 2018 22:04:37
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    int n = 5;


    ifstream input  ("royfloyd.in",  ifstream::in);
    ofstream output ("royfloyd.out", ofstream::out);

    input >> n;

    vector<vector<size_t>> matrix(n, vector<size_t> (n) );


    for( auto &i : matrix )
        for( auto &j : i )
            input >> j;


    for( size_t middle = n-1; middle ; --middle )
        for( size_t x = n-1; x ; --x )
            for( size_t y = n-1; y ; --y )
                if( matrix[x][middle] && matrix[middle][y] )
                    if( matrix[x][middle] + matrix[middle][y] < matrix[x][y] || ( x != y && matrix[x][y] == 0 ) )
                         matrix[x][y] = matrix[x][middle] + matrix[middle][y] ;


    for( auto &i : matrix ){
        for( auto &j : i )
                output << j << " ";
        output << '\n';
    }



    return 0;
}