Cod sursa(job #3359884)

Utilizator mrvalentynTime Limit Exceeded mrvalentyn Data 5 iulie 2026 19:02:56
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
/*  
    *
    * soon on twitch : ex3qute 
    * 
    * ax ah al
    * kwxkwxkxkxwkxkwxkw
    * dumnezeu sa o ierte
*/


#include <bits/stdc++.h>  
using namespace std;  
#define ull unsigned long long  
#define ll long long  
#define pb push_back  
#define fastio ios_base::sync_with_stdio(0); cin.tie(nullptr);  
const int MOD = 1e9+7;
int di[4]={0,0,-1,1};  
int dj[4]={-1,1,0,0};  

const string FILENAME = "royfloyd";
ifstream f(FILENAME + ".in");
ofstream g(FILENAME + ".out");
#ifndef exe
#define cin f
#define cout g
#endif

ll a[101][101];
ll dp[101][101];


signed main(){   
    
    
    int n;
    cin >> n;


    for(int i=1;i<=n;++i) {
        for(int j=1;j<=n;++j) cin >> a[i][j];
    }

    for(int i=1;i<=n;++i) dp[i][i] = 0;

    for(int i=1;i<=n;++i){
        for(int j=1;j<=n;++j) {
            if(a[i][j] > 0) dp[i][j] = a[i][j];
            else if(i != j) dp[i][j] = INT_MAX;
        
        }
    }

    for(int k=1;k<=n;++k) {
        for(int i=1;i<=n;++i)  {
            for(int j=1;j<=n;++j ) {
                if(dp[i][j] > dp[i][k] + dp[k][j]) {
                    dp[i][j] = dp[i][k] + dp[k][j];
                }
            }
        }
    }


    for(int i=1;i<=n;++i, cout << '\n')  {
        for(int j=1;j<=n;++j) {
            cout << (dp[i][j] < INT_MAX ? dp[i][j] : 0) << ' ';
        }
    }

    return 0;
}