Pagini recente » Cod sursa (job #2378616) | Cod sursa (job #1356488) | Cod sursa (job #2559460) | Cod sursa (job #2639028) | Cod sursa (job #1973602)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
void floyd_warshall(std::vector<std::vector<int>> &graph)
{
size_t vertices = graph.size();
for (size_t k = 0; k < vertices; k++)
{
for (size_t i = 0; i < vertices; i++)
{
for (size_t j = 0; j < vertices; j++)
{
if (graph[i][k] && graph[k][j] && (graph[i][j] > graph[i][k] + graph[k][j] || !graph[i][j]) && i != j)
graph[i][j] = graph[i][k] + graph[k][j];
}
}
}
}
int main(void)
{
std::ifstream in("royfloyd.in");
size_t n;
in >> n;
std::vector<std::vector<int>> graph{ n };
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < n; j++) {
int cost;
in >> cost;
graph[i].push_back(cost);
}
}
in.close();
floyd_warshall(graph);
std::ofstream out("royfloyd.out");
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < n; j++) {
out << graph[i][j]<<' ';
}
out << '\n';
}
out.close();
return 0;
}