Pagini recente » Cod sursa (job #609288) | Cod sursa (job #1458517) | Cod sursa (job #1156419) | Cod sursa (job #2327462) | Cod sursa (job #1493136)
///* In comments - Path rebuilding *///
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");
const int MAX_N = 100;
const int INF = 0x3fffffff;
int A[1 + MAX_N][1 + MAX_N];
//int lastK[1 + MAX_N][1 + MAX_N];
/*void shortestPath(int i, int j) {
if (lastK[i][j] == 0) {
out << i << " ";
}
else {
shortestPath(i, lastK[i][j]);
shortestPath(lastK[i][j], j);
}
}*/
int main() {
int n, i, j, k;
int I, J;
in >> n;
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) {
in >> A[i][j];
if (A[i][j] == 0)
A[i][j] = INF;
}
}
//in >> I >> J;
for (k = 1; k <= n; k++) {
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
if (i != k && j != k && i != j) {
if (A[i][j] > A[i][k] + A[k][j]) {
A[i][j] = A[i][k] + A[k][j];
//lastK[i][j] = k;
}
}
}
}
}
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) {
if (A[i][j] == INF)
A[i][j] = 0;
out << A[i][j] << " ";
}
out << "\n";
}
//shortestPath(I, J);
//out << J << "\n";
return 0;
}