Cod sursa(job #2726168)

Utilizator Andrei012Trache Andrei Andrei012 Data 20 martie 2021 14:11:17
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;
int n;
long long dp[102][102];
void Roy_Floyd(){
    int j,i,k;
    for(k=1;k<=n;++k)
        for(i=1;i<=n;++i)
            for(j=1;j<=n;++j)
                if(i!=j && dp[i][k]!=(1<<18) && dp[k][j]!=(1<<18) && dp[i][j]>dp[i][k]+dp[k][j])
                    dp[i][j]=dp[i][k]+dp[k][j];
}

int main()
{
    ifstream cin("royfloyd.in");
    ofstream cout("royfloyd.out");
    int i,j;
    cin>>n;
    for(i=1;i<=n;++i)
        for(j=1;j<=n;++j){
            cin>>dp[i][j];
            if(i!=j && dp[i][j]==0)
                dp[i][j]=(1<<18);

        }
    Roy_Floyd();
    for(i=1;i<=n;++i){
        for(j=1;j<=n;++j)
            if(dp[i][j]!=(1<<18))
                cout<<dp[i][j]<<" ";
            else
                cout<<0<<" ";
        cout<<'\n';
    }
    return 0;
}