Cod sursa(job #3353629)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 8 mai 2026 18:51:05
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb

#include <bits/stdc++.h>
using namespace std;

const int NMAX = 1e2;
int d[NMAX + 1][NMAX + 1];

int main() {
    ifstream cin("royfloyd.in");
    ofstream cout("royfloyd.out");
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= n; j++) {
            cin >> d[i][j];
            if(d[i][j] == 0 && i != j) {
                d[i][j] = 1e9;
            }
        }
    }
    for(int k = 1; k <= n; k++) {
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= n; j++) {
                d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
            }
        }
    }
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= n; j++) {
            if(d[i][j] == 1e9) {
                d[i][j] = 0;
            }
            cout << d[i][j] << ' ';
        }
        cout << '\n';
    }
    //d_k[i][j] = costul minim de la i la j daca pot folosi
    //ca noduri intermediare orice noduri din multimea {1, 2, ..., k}
	return 0;
}