Pagini recente » Cod sursa (job #3292787) | Cod sursa (job #3267804) | Cod sursa (job #2177162) | Cod sursa (job #406915) | Cod sursa (job #1585176)
#include <fstream>
#include <vector>
using namespace std;
/**@brief Performs Roy-Floyd all-pairs shortest paths.
*/
vector<vector<int>> royfloyd(const vector<vector<int>>& graph) {
vector<vector<int>> result(graph);
auto n = graph.size();
for (auto k = 0; k < n; ++k) {
for (auto i = 0; i < n; ++i) {
for (auto j = 0; j < n; ++j) {
if (!result[i][k] || !result[k][j]) {
continue;
}
if (result[i][k] + result[k][j] < result[i][j]) {
result[i][j] = result[i][k] + result[k][j];
}
}
}
}
return result;
}
int main() {
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int n; fin >> n;
vector<vector<int>> graph(n, vector<int>(n));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
fin >> graph[i][j];
}
}
auto result = royfloyd(graph);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
fout << result[i][j] << " ";
}
fout << endl;
}
return 0;
}