Cod sursa(job #3157898)

Utilizator indianu_talpa_iuteTisca Catalin indianu_talpa_iute Data 17 octombrie 2023 11:43:16
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
#define MAXN 105

using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

int main() {
    int n, graph[MAXN][MAXN] = {0};
    fin >> n;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            fin >> graph[i][j];
    for (int k = 0; k < n; k++)
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                if (
                        i != j && graph[i][k] && graph[k][j] &&
                        (graph[i][k] + graph[k][j] < graph[i][j] || !graph[i][j])
                        )
                graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            fout << (graph[i][j] == INT_MAX ? 0 : graph[i][j]) << ' ';
        fout << '\n';
    }
    return 0;
}