Cod sursa(job #3301148)

Utilizator urweakurweak urweak Data 22 iunie 2025 09:41:48
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>

std::ifstream in{"royfloyd.in"};
std::ofstream out{"royfloyd.out"};

int n;
std::vector<std::vector<int>> w;

int main()
{
    in >> n;
    w.resize(n);
    for(int i = 0; i<n; i++)
    {
        int j = n;
        int value;
        while(j--)
        {
            in >> value;
            w[i].push_back(value);
        }
    }

    for(int k = 0; k<n; k++)
    {
        for(int i = 0; i<n; i++)
        {
            for(int j = 0; j<n; j++)
            {
                if(i == j) continue;
                if(w[i][k] && w[k][j] && (w[i][j] > w[i][k] + w[k][j] || w[i][j] == 0))
                    w[i][j] = w[i][k] + w[k][j];
            }
        }
    }
    
    for(auto it : w)
    {
        for(auto it2: it)
            out << it2 << " ";
        out << std::endl;
    }
}