Pagini recente » Cod sursa (job #1828759) | Cod sursa (job #1153567) | Cod sursa (job #232076) | Cod sursa (job #604809) | Cod sursa (job #2167043)
#include <fstream>
#include <array>
#include <algorithm>
std::ofstream g("royfloyd.out");
std::ifstream f("royfloyd.in");
template<int rows, int cols>
using Matrix = std::array<std::array<int, cols>, rows>;
Matrix<100, 100> A;
size_t numberOfNodes;
void Read()
{
f >> numberOfNodes;
for (size_t i = 0U; i < numberOfNodes; ++i) {
for (size_t j = 0U; j < numberOfNodes; ++j) {
f >> A[i][j];
}
}
}
void RoyFloyd()
{
for (size_t k = 0U; k < numberOfNodes; ++k)
for (size_t i = 0U; i < numberOfNodes; ++i)
for (size_t j = 0U; j < numberOfNodes; ++j)
if (A[i][k] && A[k][j] && (A[i][j] > A[i][k] + A[k][j] || !A[i][j]) && i != j)
A[i][j] = A[i][k] + A[k][j];
}
void Print()
{
for (size_t i = 0U; i < numberOfNodes; ++i) {
for (size_t j = 0U; j < numberOfNodes; ++j) {
g << A[i][j] << ' ';
}
g << '\n';
}
}
int main(int argc, char * argv[])
{
Read();
RoyFloyd();
Print();
return 0;
}