Pagini recente » Cod sursa (job #1281886) | Cod sursa (job #1116244) | Cod sursa (job #999152) | Cod sursa (job #2675391) | Cod sursa (job #2198359)
#include <algorithm>
#include <fstream>
#include <vector>
int main() {
std::ifstream in("royfloyd.in");
std::ofstream out("royfloyd.out");
unsigned n;
in >> n;
std::vector<std::vector<int>> costMat = std::vector<std::vector<int>>();
costMat.reserve(n);
for (unsigned i = 0; i < n; i++) {
costMat.push_back(std::vector<int>());
costMat[i].reserve(n);
}
for (unsigned i = 0; i < n; i++) {
for (unsigned j = 0; j < n; j++) {
int cost;
in >> cost;
costMat[i].push_back(cost);
}
}
for (unsigned k = 0; k < n; k++) {
for (unsigned i = 0; i < n; i++) {
for (unsigned j = 0; j < n; j++) {
if (costMat[i][k] && costMat[k][j] && i != j)
if (costMat[i][j]) costMat[i][j] = std::min(costMat[i][j], costMat[i][k] + costMat[k][j]);
else costMat[i][j] = costMat[i][k] + costMat[k][j];
}
}
}
for (unsigned i = 0; i < n; i++) {
for (unsigned j = 0; j < n; j++) {
out << costMat[i][j] << " ";
}
out << "\n";
}
return 0;
}