Pagini recente » Cod sursa (job #2048314) | Cod sursa (job #2334206) | Cod sursa (job #2796196) | Cod sursa (job #1424604) | Cod sursa (job #1474783)
#include <cstdio>
#define IN_FILE_NAME "royfloyd.in"
#define OUT_FILE_NAME "royfloyd.out"
#define NMAX 100
#define INF 10000
FILE *in, *out;
int cost[NMAX][NMAX];
int N;
void read() {
fscanf(in, "%d", &N);
for (int i = 0 ; i < N ; i++) {
for (int j = 0 ; j < N ; j++ ) {
fscanf(in, "%d", &cost[i][j]);
cost[i][j] = cost[i][j] == 0 && i != j ? INF : cost[i][j];
}
}
}
int min(int a, int b) {
return a < b ? a: b;
}
void solve() {
int i, j, k;
for ( k = 0 ; k < N ; k++) {
for (i = 0 ; i < N ; i++) {
for (j = 0 ; j < N ; j++ ) {
if (k != i &&
k != j &&
i != j) {
cost[i][j] = min(cost[i][j], cost[i][k] + cost[k][j]);
}
}
}
}
}
void printMatrix() {
int i,j;
for (i = 0; i < N ; i++) {
for (j = 0 ; j < N ; j++) {
fprintf(out, "%d ", cost[i][j]);
}
fprintf(out, "\n");
}
}
int main() {
in = fopen(IN_FILE_NAME, "r");
out = fopen(OUT_FILE_NAME, "w");
read();
solve();
printMatrix();
fclose(in);
fclose(out);
return 0;
}