Pagini recente » Cod sursa (job #3195638) | Cod sursa (job #1183830) | Cod sursa (job #3183763) | Cod sursa (job #1508295) | Cod sursa (job #1228390)
#include <array>
#include <limits>
#include <cstdlib>
#include <fstream>
using namespace std;
const int NMAX = 129;
const int oo = numeric_limits<int>::max();
using GraphMatrix = array<array<int, NMAX>, NMAX>;
void read(int& N, GraphMatrix& v) {
ifstream in{"royfloyd.in"};
in >> N;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
in >> v[i][j];
if (0 == v[i][j]) {
v[i][j] = oo;
}
}
}
}
void solve(int N, GraphMatrix& v) {
for (int k = 0; k < N; ++k) {
for (int i = 0; i < N; ++i) {
if (i != k) {
for (int j = 0; j < N; ++j) {
if (k != j && i != j && v[i][j] > v[i][k] + v[k][j]) {
v[i][j] = v[i][k] + v[k][j];
}
}
}
}
}
}
void output(int N, const GraphMatrix& v) {
ofstream out { "royfloyd.out" };
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
out << (oo == v[i][j] ? 0 : v[i][j]) << ' ';
}
out << '\n';
}
}
int main() {
int N;
GraphMatrix v;
read(N, v);
solve(N, v);
output(N, v);
return EXIT_SUCCESS;
}