Cod sursa(job #2964878)

Utilizator SochuDarabaneanu Liviu Eugen Sochu Data 14 ianuarie 2023 09:23:11
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

const int N = 1e2 + 10;

int n;
int c[N][N];

int main()
{
    freopen("royfloyd.in" , "r" , stdin) , freopen("royfloyd.out" , "w" , stdout);

    int i , j , t;

    cin >> n;

    for(i = 1 ; i <= n ; i++)
        for(j = 1 ; j <= n ; j++)
            cin >> c[i][j];

    for(i = 1 ; i <= n ; i++)
        for(j = 1 ; j <= n ; j++)
            if(c[i][j] == 0)
                c[i][j] = INT_MAX;

    for(t = 1 ; t <= n ; t++)
        for(i = 1 ; i <= n ; i++)
            for(j = 1 ; j <= n ; j++)
                if(i != j)
                    if(c[i][t] != INT_MAX && c[t][j] != INT_MAX)
                        c[i][j] = min(c[i][j] , c[i][t] + c[t][j]);

    for(i = 1 ; i <= n ; i++)
        for(j = 1 ; j <= n ; j++)
        {
            if(c[i][j] == INT_MAX) cout << 0;
            else cout << c[i][j];
            cout << ' ';
            if(j == n) cout << '\n';
        }

    return 0;
}