Pagini recente » Cod sursa (job #1108744) | Cod sursa (job #407366) | Cod sursa (job #2443821) | Cod sursa (job #2210837) | Cod sursa (job #2863592)
#include <algorithm>
#include <array>
#include <cstdint>
#include <fstream>
using u32 = uint32_t;
using u64 = uint64_t;
constexpr u32 MAX_NODES = 100;
constexpr u64 MAX_PATH = 1000000000;
std::array<std::array<u64, MAX_NODES>, MAX_NODES> mat;
int main () {
std::ifstream f("royfloyd.in");
f.exceptions(f.badbit | f.failbit | f.eofbit);
std::ofstream g("royfloyd.out");
size_t n;
f >> n;
for (size_t i = 0; i != n; ++ i)
for (size_t j = 0; j != n; ++ j) {
f >> mat[i][j];
if (mat[i][j] == 0 && i != j)
mat[i][j] = MAX_PATH;
}
for (size_t k = 0; k != n; ++ k)
for (size_t i = 0; i != n; ++ i)
for (size_t j = 0; j != n; ++ j)
mat[i][j] = std::min(mat[i][j], mat[i][k] + mat[k][j]);
for (size_t i = 0; i != n; ++ i, g << '\n')
for (size_t j = 0; j != n; ++ j)
g << (mat[i][j] == MAX_PATH ? 0 : mat[i][j]) << ' ';
}