Cod sursa(job #2755880)

Utilizator ViAlexVisan Alexandru ViAlex Data 28 mai 2021 17:34:14
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include<iostream>
#include<fstream>

using namespace std;

ifstream in("royfloyd.in");
ofstream out("royfloyd.out");

const int mx=102;
const int inf=1e9;

int rf[mx][mx],n;


void read(){
    in>>n;
    for(int i=0;i<n;i++){
        for(int k=0;k<n;k++){
            in>>rf[i][k];

            if(rf[i][k]==0){
                rf[i][k]=inf;
            }

        }
    }
}

void solve(){
    int newdist;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){

            if(i==j)
                continue;

            for(int k=0;k<n;k++){
                newdist=rf[i][k]+rf[k][j];
                rf[i][j]=min(rf[i][j],newdist);
            }
        }
    }

    for(int i=0;i<n;i++){
        for(int k=0;k<n;k++){
            out<<(rf[i][k]==inf?0:rf[i][k])<<" ";
        }
        out<<'\n';
    }
}

int main(){
    read();
    solve();
    return 0;
}