Pagini recente » Cod sursa (job #707253) | Cod sursa (job #442563) | Cod sursa (job #1080467) | Cod sursa (job #2551218) | Cod sursa (job #1713571)
#include <array>
#include <limits>
#include <fstream>
const int NMAX = 111;
const int INF = std::numeric_limits<int>::max() >> 1;
int main() {
std::ifstream in{"royfloyd.in"};
std::ofstream out{"royfloyd.out"};
int N;
std::array<std::array<int, NMAX>, NMAX> G;
in >> N;
for (int i = 1; i <= N; ++i) {
for (int j = 1; j <= N; ++j) {
G[i][j] = INF;
}
}
for (int i = 1; i <= N; ++i) {
for (int j = 1; j <= N; ++j) {
in >> G[i][j];
G[i][j] = G[i][j] ? G[i][j] : INF;
}
}
for (int k = 1; k <= N; ++k) {
for (int i = 1; i <= N; ++i) {
if (k != i ) {
for (int j = 1; j <= N; ++j) {
if (k != j && i != j && G[i][j] > G[i][k] + G[k][j]) {
G[i][j] = G[i][k] + G[k][j];
}
}
}
}
}
for (int i = 1; i <= N; ++i) {
for (int j = 1; j <= N; ++j) {
out << (INF == G[i][j] ? 0 : G[i][j]) << " ";
}
out << "\n";
}
return 0;
}