Cod sursa(job #2900755)

Utilizator the4Designerthe4Designer the4Designer Data 12 mai 2022 09:02:30
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.69 kb
#include <bits/stdc++.h>
using namespace std;

#define itn int
#define nit int

typedef long long           ll;
typedef long double         ld;
typedef                     pair<ll, ll> pll;
typedef                     vector<ll> vll;

#define MOD                 1000000007
#define MOD2                998244353
#define INF                 1e18
#define debug(x)            cerr << #x << ' ' << x << '\n'
#define mem0(x)             memset(x, 0, sizeof(x))
#define mem0x3f(x)          memset(x, 0x3f, sizeof(x))
#define pb                  push_back
#define fst                 first
#define snd                 second
#define fastio              ios_base::sync_with_stdio(0); cin.tie(0)

const ld                    pi = acos(-1);

ll rf[105][105];
int main(void) {
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);

    int n; cin >> n;
    
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            rf[i][j] = INF;
        }
    }
    
    for (int i = 0; i < n; ++i) rf[i][i] = 0;

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            ll tmp;
            cin >> tmp;

            if (tmp != 0) rf[i][j] = tmp;
        }
    }

    for (int k = 0; k < n; ++k) {
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                if (k == i || k == j) continue;

                rf[i][j] = min(rf[i][j], rf[i][k] + rf[k][j]);
            }
        }
    }
    
    for (int i = 0;i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            cout << (rf[i][j] == INF ? 0 : rf[i][j]) << ' ';
        }
        cout << '\n';
    }

    return 0;
}