Cod sursa(job #2669192)

Utilizator 3DwArDPauliuc Edward 3DwArD Data 6 noiembrie 2020 13:43:24
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb

#include <bits/stdc++.h>
using namespace std;
ifstream input("royfloyd.in");
ofstream output("royfloyd.out");
// #define input cin
// #define output cout
int main()
{
    int n, m[103][103];

    input >> n;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            input >> m[i][j]; // Reprezentam graful prin matricea de costuri

    for (int aux = 1; aux <= n; aux++)
        for (int i = 1; i <= n; i++)
            // Pentru fiecare pereche de noduri
            for (int j = 1; j <= n; j++)
                // Incercam sa folosim fiecare nod ca nod intermediar
                if (m[i][aux] && m[aux][j] && i != j)
                    // Daca avem muchii intre noduri si nodul auxiliar
                    if (m[i][j] == 0 || m[i][j] > m[i][aux] + m[aux][j])
                        // Imbunatatim costul, daca acesta este mai mic
                        m[i][j] = m[i][aux] + m[aux][j];

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
            output << m[i][j] << " ";
        output << "\n";
    }
    return 0;
}