Pagini recente » Cod sursa (job #1747501) | Cod sursa (job #947612) | Cod sursa (job #61761) | Cod sursa (job #66700) | Cod sursa (job #1250104)
#include <algorithm>
#include <fstream>
#include <iterator>
#include <vector>
using namespace std;
int main() {
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int n; fin >> n;
vector<vector<int>> G(n);
for (int i = 0, x; i < n; ++i)
copy_n(istream_iterator<int>(fin), n, back_inserter(G[i]));
for (int k = 0; k < n; ++k)
for (int u = 0; u < n; ++u)
for (int v = 0; v < n; ++v)
if (u != v && G[u][k] != 0 && G[k][v] != 0) {
if (G[u][v] == 0) G[u][v] = G[u][k] + G[k][v];
else G[u][v] = min(G[u][v], G[u][k] + G[k][v]);
}
for (auto& v : G) {
copy(v.begin(), v.end(), ostream_iterator<int>(fout, " "));
fout << '\n';
}
return 0;
}