Cod sursa(job #2283384)

Utilizator alexge50alexX AleX alexge50 Data 15 noiembrie 2018 14:50:12
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <array>

const int MAX_N = 100;
const int INF = 1 << 24;
using Matrix = std::array<std::array<int, MAX_N>, MAX_N>;

int main()
{
    std::ifstream fin("royfloyd.in");
    int n;
    Matrix distances;

    fin >> n;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
        {
            fin >> distances[i][j];

            distances[i][j] = (i != j && distances[i][j] == 0) ? INF : distances[i][j];
        }


    for(int k = 0; k < n; k++)
        for(int i = 0; i < n; i ++)
            for(int j = 0; j < n; j++)
                distances[i][j] = std::min(distances[i][j], distances[i][k] + distances[k][j]);

    std::ofstream fout("royfloyd.out");
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
            distances[i][j] = distances[i][j] == INF ? 0 : distances[i][j], fout << distances[i][j] << ' ';
        fout << '\n';
    }


    return 0;
}