Cod sursa(job #3341588)

Utilizator cyg_vladioanBirsan Vlad cyg_vladioan Data 20 februarie 2026 11:36:15
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <climits>
#include <algorithm>

const int NMAX = 100;

int a[NMAX][NMAX];

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

    int n;
    fin >> n;

    for(int i = 0; i < n; ++ i){
        for(int j = 0; j < n; ++ j) {
            fin >> a[i][j];
            if(a[i][j] == 0) {
                a[i][j] = INT_MAX;
            }
        }
    }

    for(int i = 0; i < n; ++ i) {
        for(int j = 0; j < n; ++ j) {
            if(a[i][j] != INT_MAX) {
                for(int k = 0; k < n; ++ k) {
                    if(i != k && a[j][k] != INT_MAX) {
                        a[i][k] = std::min(a[i][k], a[i][j] + a[j][k]);
                    }
                }
            }
        } 
    }

    for(int i = 0; i < n; ++ i){
        for(int j = 0; j < n; ++ j) {
            if(a[i][j] == INT_MAX) {
                fout << "0 ";
            } else {
                fout << a[i][j] << " ";
            }
        }
        fout << "\n";
    }

    return 0;
}