Pagini recente » Cod sursa (job #2615990) | Cod sursa (job #355036) | Cod sursa (job #1900975) | Cod sursa (job #725262) | Cod sursa (job #2217288)
/**
* Worg
*/
#include <cstdio>
#include <algorithm>
FILE *fin = freopen("royfloyd.in", "r", stdin); FILE *fout = freopen("royfloyd.out", "w", stdout);
const int maxN = 100 + 5;
const int inf = 1e9;
/*-------- Data --------*/
int n;
int royFloyd[maxN][maxN];
/*-------- --------*/
void ReadInput() {
scanf("%d", &n);
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
scanf("%d", &royFloyd[i][j]);
if(royFloyd[i][j] == 0) royFloyd[i][j] = inf;
}
}
}
void RoyFloyd() {
for(int k = 0; k < n; k++) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(i == j || i == k || j == k) continue;
royFloyd[i][j] = std::min(royFloyd[i][j], royFloyd[i][k] + royFloyd[k][j]);
}
}
}
}
void WriteOutput() {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(royFloyd[i][j] != inf) printf("%d ", royFloyd[i][j]);
else printf("%d ", 0);
}
printf("\n");
}
}
int main() {
ReadInput();
RoyFloyd();
WriteOutput();
return 0;
}