Pagini recente » Monitorul de evaluare | Cod sursa (job #819740) | Statistici Muntean Natan (eden001) | Cod sursa (job #1967898) | Cod sursa (job #2024856)
#include <array>
#include <limits>
#include <fstream>
constexpr int NMAX=111;
constexpr int inf= std::numeric_limits<int>::max() >> 1;
int main() {
int N;
std::ifstream in{"royfloyd.in"};
std::ofstream out{"royfloyd.out"};
std::array<std::array<int, NMAX>, NMAX> graph;
in >> N;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
in >> graph[i][j];
if (0 == graph[i][j]) graph[i][j] = inf;
}
}
for (int k = 0; k < N; ++k) {
for (int i = 0; i < N; ++i) {
if (i == k) continue;
for (int j = 0; j < N; ++j) {
if (i != j && j != k && graph[i][j] > graph[i][k] + graph[k][j]) {
graph[i][j] = graph[i][k] + graph[k][j];
}
}
}
}
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
out << (graph[i][j] == inf ? 0 : graph[i][j]) << ' ';
}
out << '\n';
}
return 0;
}