Pagini recente » Cod sursa (job #1562247) | Cod sursa (job #2495123) | Cod sursa (job #2400448) | Cod sursa (job #3275944) | Cod sursa (job #352595)
Cod sursa(job #352595)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100
// INFINITE * 100 should be < MAXINT
// INFINITE should be > max value(1000) * 100
#define INFINITE 10000000
#define min( a, b) ( (a) > (b) ? (b) : (a))
int main() {
freopen("royfloyd.in", "r", stdin);
freopen("royfloyd.out", "w", stdout);
int n;
int edgeCost[MAXN][MAXN], shortestPath[MAXN][MAXN][MAXN];
int i, j, k;
scanf("%d", &n);
for (i = 0; i < n; i ++) {
for (j = 0; j < n; j ++) {
scanf("%d", &edgeCost[i][j]);
if (edgeCost[i][j] == 0) {
edgeCost[i][j] = INFINITE;
}
shortestPath[i][j][0] = edgeCost[i][j];
}
}
for (k = 1; k < n; k ++) {
for (i = 0; i < n; i ++) {
for (j = 0; j < n; j ++) {
if (i != j) {
shortestPath[i][j][k] = min(shortestPath[i][j][k - 1], shortestPath[i][k][k - 1] + shortestPath[k][j][k - 1]);
}
}
}
}
for (i = 0; i < n; i ++) {
for (j = 0; j < n; j ++) {
if (shortestPath[i][j][n - 1] < INFINITE) {
printf("%d ", shortestPath[i][j][n - 1]);
} else {
printf("0 ");
}
}
printf("\n");
}
fclose(stdout);
return 0;
}