Cod sursa(job #2193686)

Utilizator bogdanpaunFMI Paun Bogdan Gabriel bogdanpaun Data 10 aprilie 2018 22:28:42
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 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 = 0; middle < n ; ++middle )
        for( size_t x = 0; x < n; ++x )
            for( size_t y = 0; y < n; ++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;
}