Cod sursa(job #3037297)

Utilizator AndreiDeltaBalanici Andrei Daniel AndreiDelta Data 25 martie 2023 14:16:58
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
typedef long long ll;
typedef pair<int, int> pi;
int t, T;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n;
    f >> n;

    vector<vector<vector<ll>>> A(n + 1, vector<vector<ll>>(n + 1, vector<ll>(2, 0)));
    for(int i=1;i<=n;i++)
        for (int j = 1; j <= n; j++) {
            f >> A[i][j][0];
            if (A[i][j][0] == 0 && i != j) A[i][j][0] = INT_MAX;
        }

    for (int k = 1; k <= n; k++)
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
            if(i != j)
                A[i][j][k % 2] = min(A[i][j][!(k % 2)], A[i][k][!(k % 2)] + A[k][j][!(k % 2)]);

    for (int i = 1; i <= n; i++, g << '\n')
        for (int j = 1; j <= n; j++)
            g << A[i][j][n % 2] << ' ';





    return 0;
}