Cod sursa(job #2565780)

Utilizator SqueekDanielTodasca Daniel SqueekDaniel Data 2 martie 2020 16:45:13
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

#define MAXN    105
#define INF     2e9

#define FILENAME    std::string("royfloyd")
std::ifstream input (FILENAME+".in");
std::ofstream output(FILENAME+".out");

int RF[MAXN][MAXN];

int main()
{
    int N;  input >> N;
    for (int i=1, j; i<=N; ++i) for (j=1; j<=N; ++j)
        input >> RF[i][j], RF[i][j] = ((RF[i][j] == 0 && i != j)? INF : RF[i][j]);
    for (int k=1; k<=N; ++k)
        for (int i=1; i<=N; ++i)
            for (int j=1; j<=N; ++j)
                if (RF[i][k] != INF && RF[k][j] != INF)
                    RF[i][j] = std::min(RF[i][j], RF[i][k] + RF[k][j]);
    for (int i=1, j; i<=N; ++i, output << '\n') for (j=1; j<=N; ++j)
        output << (RF[i][j] == INF ? 0 : RF[i][j]) << ' ';

    return 0;
}