Pagini recente » Cod sursa (job #2743668) | Cod sursa (job #2971380) | Istoria paginii utilizator/edimoga | Istoria paginii utilizator/florinsalam | Cod sursa (job #1295870)
#include <cstdio>
#define Max_Size 109
using namespace std;
const char iname[] = "royfloyd.in";
const char oname[] = "royfloyd.out";
int N, RF[Max_Size][Max_Size];
inline void Read()
{
FILE *in = fopen(iname, "r");
fscanf(in, "%d", &N);
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= N; ++j) {
fscanf(in, "%d", &RF[i][j]);
if(!RF[i][j] && i != j) RF[i][j] = Max_Size * Max_Size;
}
}
inline void Solve()
{
for(int k = 1; k <= N; ++k)
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= N; ++j)
if(i != j && RF[i][j] > RF[i][k] + RF[k][j] && RF[i][k] && RF[k][j])
RF[i][j] = RF[i][k] + RF[k][j];
}
inline void Write()
{
FILE *out = fopen(oname, "w");
for(int i = 1; i <= N; ++i) {
for(int j = 1; j <= N; ++j) fprintf(out, "%d ", RF[i][j]);
fprintf(out, "\n");
}
}
int main()
{
Read();
Solve();
Write();
return 0;
}