Cod sursa(job #3321566)

Utilizator danciuvalentinDanciu Valentin-Nicolae danciuvalentin Data 10 noiembrie 2025 09:18:26
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <vector>
#include <queue>
#include <climits>
#include <fstream>
using namespace std;

ifstream fin("royfloyd.in");
ofstream gout("royfloyd.out");
int main(){
    int n;
    fin>>n;
    vector<vector<int>> dist(n, vector<int>(n, INT_MAX));
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            int x;
            fin>>x;
            if(x != 0){
                dist[i][j] = x;
            }
            if(i == j){
                dist[i][j] = 0;
            }
        }
    }
    for(int k=0;k<n;k++){
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(dist[i][k] != INT_MAX && dist[k][j] != INT_MAX){
                    if(dist[i][k] + dist[k][j] < dist[i][j]){
                        dist[i][j] = dist[i][k] + dist[k][j];
                    }
                }
            }
        }
    }

    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(dist[i][j] == INT_MAX){
                gout<<0<<" ";
            }
            else{
                gout<<dist[i][j]<<" ";
            }
        }
        gout<<"\n";
    }
    return 0;
}