Cod sursa(job #2843851)

Utilizator paisieRusu Paisie paisie Data 3 februarie 2022 01:00:46
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define pair<int, int> pi
#define mp make_pair
#define forr(X) for(int i = 0; i<X; i++)
#pragma GCC optimize("Ofast")
#define F first
#define all(X) X.begin(), X.end()
#define S second
#define int ll
#define out(X) for(auto it: X){ for(auto ito : it)cout<<ito<<" "; cout<<endl;}
#define in 1000000000000000031

void solve(){
	int n; cin>>n;
	vector<vector<int> >g(n, vector<int>(n));
	forr(n){
		for(int j=0; j<n; j++){
			cin>>g[i][j];
			if(g[i][j]==0){
				g[i][j]=in;
			}
		}
	}
	
	for(int k=0; k<n; k++){
		forr(n){
			for(int j=0; j<n; j++){
				if(i==j || i==k || j==k)continue;
				if(g[i][k]+g[k][j]<g[i][j]){
					g[i][j]= g[i][k]+g[k][j];
				}
			}
		}
	}
	
	forr(n){
		for(int j=0; j<n; j++){
			if(g[i][j]==in)cout<<"0 ";
			else cout<<g[i][j]<<" ";
		}
		cout<<endl;
	}
	
	
}

int32_t main(){
	freopen("royfloyd.in", "r", stdin);
	freopen("royfloyd.out", "w", stdout);
	//int t;cin>>t;while(t--)
	solve();
}