Cod sursa(job #2970243)

Utilizator GeorgeNistorNistor Gheorghe GeorgeNistor Data 24 ianuarie 2023 18:44:54
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
/*
 * https://infoarena.ro/problema/royfloyd 100p
 */
#include <bits/stdc++.h>

using namespace std;

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

int V, d[105][105];

void read(){
    in >> V;
    for(int i = 0; i < V; i++)
        for(int j = 0; j < V; j++)
            in >> d[i][j];
    in.close();
}

void print(){
    cout << V;
    for(int i = 0; i < V; i++, out << '\n')
        for(int j = 0; j < V; j++)
            out << d[i][j] << ' ';
}
void floydWarshall(){
    for(int k = 0; k < V; k++)
        for(int i = 0; i < V; i++)
            for(int j = 0; j < V; j++) {
                if (i == j)
                    continue;
                if(!d[i][k] || !d[k][j])
                    continue;
                d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
            }
}

int main() {
    read();
    floydWarshall();
    print();
    return 0;
}