Cod sursa(job #2669638)

Utilizator andrei_C1Andrei Chertes andrei_C1 Data 7 noiembrie 2020 13:48:08
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
const int INF=1e6+1;
int n, m;
vector<vector<int>>d;
int main(){
    fin>>n;
    d=vector<vector<int>>(n+1, vector<int>(n+1));
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            fin>>d[i][j];
        }
    }
    for(int k=1; k<=n; k++){
        for(int i=1; i<=n; i++){
            for(int j=1; j<=n; j++){
                if(i!=j && d[i][k] < INF && d[k][j] < INF){
//                    cout<<d[i][k]+d[k][j]<<'\n';
                    if(d[i][j] > d[i][k] + d[k][j]){
                        d[i][j]=d[i][k]+d[k][j];
                    }
                }
            }
        }
    }
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            if(d[i][j] == INF){
                fout<<0<<" ";
            }else{
                fout<<d[i][j]<<" ";
            }
        }
        fout<<'\n';
    }
    return 0;
}