Cod sursa(job #3121702)

Utilizator mihaisoare349Soare Mihai-Alexandru mihaisoare349 Data 14 aprilie 2023 21:08:46
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <climits>

const int INF = INT_MAX/2;

int main() {
    std::ifstream fin("royfloyd.in");
    std::ofstream fout("royfloyd.out");

    int n;
    fin >> n;
    std::vector<std::vector<int>> adjacency_matrix(n, std::vector<int>(n, INF));
    for(auto &line : adjacency_matrix) {
        for(auto &el : line) {
            fin >> el;
            if(!el)
                el=INF;
        }
    }

    for(int i = 0; i<n; i++)
        adjacency_matrix[i][i] = 0;

    for(int k = 0; k<n; k++)
        for(int i = 0; i < n; i++)
            for(int j = 0; j<n; j++)
                if(adjacency_matrix[i][j] > adjacency_matrix[i][k] + adjacency_matrix[k][j])
                    adjacency_matrix[i][j] = adjacency_matrix[i][k] + adjacency_matrix[k][j];

    for(auto const& line : adjacency_matrix) {
        for(auto el : line) {
            fout << (el==INF ? 0 : el) << ' ';
        }
        fout << '\n';
    }

    return 0;
}