Cod sursa(job #2579489)

Utilizator cip_ionescuCiprian Ionescu cip_ionescu Data 12 martie 2020 15:22:04
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
//
//  main.cpp
//  royfloyd
//
//  Created by Ciprian Ionescu on 3/12/20.
//  Copyright © 2020 CIP.FUN. All rights reserved.
//

#include <iostream>
#include <fstream>

#define MAX_N 100
#define INF (1 << 29)

using std::cin;
using std::cout;

int d[1 + MAX_N][1 + MAX_N];

int main(int argc, const char * argv[]) {
    std::ifstream fin("royfloyd.in");
    std::ofstream fout("royfloyd.out");
    
    int n;
    fin >> n;
    
    for (auto i = 1 ; i <= n ; i++)
        for (auto j = 1 ; j <= n ; j++) {
            fin >> d[i][j];
            if (i != j && d[i][j] == 0) d[i][j] = INF;
        }
    
    for (auto k = 1 ; k <= n ; k++)
        for (auto i = 1 ; i <= n ; i++)
            for (auto j = 1 ; j <= n ; j++)
                if (d[i][k] + d[k][j] < d[i][j])
                    d[i][j] = d[i][k] + d[k][j];
    
    for (auto i = 1 ; i <= n ; i++) {
        for (auto j = 1 ; j <= n ; j++) {
            if (d[i][j] == INF) d[i][j] = 0;
            fout << d[i][j] << ' ';
        }
        fout << '\n';
    }
    
    return 0;
}