Pagini recente » Cod sursa (job #206097) | Cod sursa (job #2062394) | Cod sursa (job #2446752) | Cod sursa (job #2776629) | Cod sursa (job #1238041)
#include <array>
#include <limits>
#include <fstream>
#include <cstdlib>
const int NMAX = 111;
const int oo = std::numeric_limits<int>::max() >> 1;
int main() {
int N;
std::array<std::array<int, NMAX>, NMAX> dp;
std::ifstream in{"royfloyd.in"};
std::ofstream out{"royfloyd.out"};
in >> N;
for (int i = 1; i <= N; ++i) {
for (int j = 1; j <= N; ++j) {
in >> dp[i][j];
if (0 == dp[i][j]) {
dp[i][j] = oo;
}
}
}
for (int k = 1; k <= N; ++k) {
for (int i = 1; i <= N; ++i) {
if (k == i) {
continue;
}
for (int j = 1; j <= N; ++j) {
if (k != j && i != j && dp[i][j] > dp[i][k] + dp[k][j]) {
dp[i][j] = dp[i][k] + dp[k][j];
}
}
}
}
for (int i = 1; i <= N; ++i) {
for (int j = 1; j <= N; ++j) {
out << (oo == dp[i][j] ? 0 : dp[i][j]) << ' ';
}
out << '\n';
}
return EXIT_SUCCESS;
}