Cod sursa(job #3157395)

Utilizator poparobertpoparobert poparobert Data 15 octombrie 2023 14:41:36
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
vector<vector<ll>> RoydFloyd(vector<vector<ll>> &adi)
{
    vector<vector<ll>> dist=adi;
    ll i,j,k;
    for(i=0;i<dist.size();i++)
        for(j=0;j<dist.size();j++)
            if(dist[i][j]==0)dist[i][j]=1e8;
    for(k=0;k<dist.size();k++)
        for(i=0;i<dist.size();i++)
            for(j=0;j<dist.size();j++)
                dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
    return dist;
}
int main()
{
    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);
    ll n,i,j;
    cin>>n;
    vector<vector<ll>> adi(n+1,vector<ll>(n+1));
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)cin>>adi[i][j];
    adi=RoydFloyd(adi);
    for(i=0;i<n;i++)adi[i][i]=0;
    for(i=0;i<n*n;i++)cout<<adi[i/n][i%n]<<((i+1)%n?' ':'\n');
	return 0;
}