Pagini recente » Cod sursa (job #1586105) | Cod sursa (job #550847) | Cod sursa (job #1348794) | Cod sursa (job #2638202) | Cod sursa (job #2431281)
#include <fstream>
#include <vector>
#include <assert.h>
int main() {
std::ifstream in("royfloyd.in");
std::ofstream out("royfloyd.out");
short n;
in >> n;
assert(1 <= n && n <= 100);
std::vector<std::vector<short>> a(n + 1, std::vector<short>(n + 1));
for (int i = 1 ; i <= n ; ++i) {
for (int j = 1 ; j <= n ; ++j) {
in >> a[i][j];
}
}
for (int k = 1 ; k <= n ; ++k) {
for (int i = 1 ; i <= n ; ++i) {
for (int j = 1 ; j <= n ; ++j) {
if (a[i][k] && a[k][j] && i != j) {
if (a[i][j]) {
a[i][j] = std::min(a[i][j], short(a[i][k] + a[k][j]));
} else {
a[i][j] = a[i][k] + a[k][j];
}
}
}
}
}
for (int i = 1 ; i <= n ; ++i) {
for (int j = 1 ; j <= n ; ++j) {
out << a[i][j] << " ";
}
out << '\n';
}
return 0;
}