Cod sursa(job #2665774)

Utilizator FasoleboiTudor Gadalean Fasoleboi Data 31 octombrie 2020 12:06:24
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

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

#define NMAX 101

int n, mat[NMAX][NMAX];
vector < pair <int, int> > v[NMAX];

void read(){
    int x, y, c;
    fin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            fin>>x;
            mat[i][j] = x;
            if(!x){
                v[i].push_back({j,x});
            }
        }
    }
}

int main(){
    read();
    for(int k=1;k<=n;k++){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(mat[i][k] && mat[k][j] && i!= j && (mat[i][k] + mat[k][j] < mat[i][j] || !mat[i][j])){
                    mat[i][j] = mat[i][k] + mat[k][j];
                }
            }
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            fout<<mat[i][j]<<" ";
        }
        fout<<endl;
    }
    return 0;
}