Cod sursa(job #3303755)

Utilizator vlvdVlad Hosu vlvd Data 17 iulie 2025 18:06:47
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

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

int n;
vector<vector<int>> ma;


void citire(){
    fin >> n;
    ma.resize(n);

    for(auto& row: ma){
        row.resize(n);
    }

    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            fin >> ma[i][j];
        }
    }
}

void royfloyd(){
    for(int k = 0; k < n; k++){
        for(int i = 0; i < n; i++){
            for(int j = 0; j < n; j++){
                if(i != j && ma[i][k] != 0 && ma[k][j] != 0){
                    if(ma[i][j] > ma[i][k] + ma[k][j])
                        ma[i][j] = ma[i][k] + ma[k][j];
                }
            }
        }
    }
}

int main(){

    citire();
    royfloyd();
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            fout << ma[i][j] << " ";
        }
        fout << '\n';
    }
    return 0;
}