Pagini recente » Cod sursa (job #816970) | Cod sursa (job #28062) | Cod sursa (job #1397308) | Cod sursa (job #1944382) | Cod sursa (job #2449333)
#include <fstream>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
#define ARRAY_MAX 1000
int path[ARRAY_MAX][ARRAY_MAX];
int N;
void Read() {
fin >> N;
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
fin >> path[i][j];
}
void shortestPath() {
for (int k = 0; k < N; k++)
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
if (path[i][k] && path[k][j] && (path[i][j] > path[i][k] + path[k][j] || (!path[i][j] && i != j)))
path[i][j] = path[i][k] + path[k][j];
}
void Write() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
fout << path[i][j] << " ";
fout << "\n";
}
}
int main() {
Read();
shortestPath();
Write();
}