Cod sursa(job #2924122)

Utilizator RaresPoinaruPoinaru-Rares-Aurel RaresPoinaru Data 25 septembrie 2022 21:38:36
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("royfloyd.in");
ofstream fout ("royfloyd.out");

const int MAXN=300;
const int INF=1e9;

int n,dp[MAXN][MAXN][2];
vector <pair <int,int>> g[MAXN];

int main()
{
    fin >>n;
    for (int i=1;i<=n;++i){
        for (int j=1;j<=n;++j){
            int x;
            fin >>x;
            g[i].push_back ({x,j});
            if (x==0)
                dp[i][j][0]=INF;
            else
                dp[i][j][0]=x;
        }
    }
    for (int k=1;k<=n;++k){
        for (int i=1;i<=n;++i){
            for (int j=1;j<=n;++j){
                dp[i][j][k%2]=min (dp[i][j][1-(k%2)],dp[i][k][1-(k%2)]+dp[k][j][1-(k%2)]);
            }
        }
    }
    for (int i=1;i<=n;++i){
        for (int j=1;j<=n;++j){
            if (dp[i][j][n%2]==INF or i==j)
                fout <<0<<' ';
            else
                fout <<dp[i][j][n%2]<<' ';
        }
        fout <<'\n';
    }
    fin.close ();
    fout.close ();
    return 0;
}