Pagini recente » Cod sursa (job #247117) | Cod sursa (job #1160082) | Cod sursa (job #2072342) | Cod sursa (job #2747914) | Cod sursa (job #1889285)
#include <cstdio>
#include <vector>
using namespace std;
typedef vector<vector<int>> vvi;
auto fin = fopen("royfloyd.in", "r");
auto fout = fopen("royfloyd.out", "w");
vvi mat;
unsigned int n;
vvi royfloyd(vvi &a) {
vvi b = a;
for (auto k = 0u; k < n; ++k)
for (auto i = 0u; i < n; ++i) {
if (b[i][k] == 0)
continue;
for (auto j = 0u; j < n; ++j) {
if (b[k][j] == 0 || i == j)
continue;
auto d = b[i][k] + b[k][j];
if (b[i][j] == 0 || b[i][j] > d)
b[i][j] = d;
}
}
return b;
}
int main() {
fscanf(fin, "%d", &n);
mat.resize(n);
for (auto i = 0u; i < n; ++i)
for (auto j = 0u; j < n; ++j) {
int val;
fscanf(fin, "%d", &val);
mat[i].push_back(val);
}
auto res = royfloyd(mat);
for (auto i = 0u; i < n; ++i, fprintf(fout, "\n"))
for (auto j = 0u; j < n; ++j)
fprintf(fout, "%d ", res[i][j]);
return 0;
}