Pagini recente » Cod sursa (job #2861325) | Cod sursa (job #1867762) | Cod sursa (job #2407019) | Cod sursa (job #2384759) | Cod sursa (job #1457485)
#include<stdio.h>
#include<stdlib.h>
int main() {
int n;
int **d;
int i, j, k;
FILE* fi = fopen("royfloyd.in", "r");
FILE* fo = fopen("royfloyd.out", "w");
fscanf(fi, "%d", &n);
d = (int**) malloc (n * sizeof (int*));
for (i = 0; i < n; i++) {
d[i] = (int*) malloc (n * sizeof(int));
}
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
fscanf(fi, "%d", &d[i][j]);
/*for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf("%d ", d[i][j]);
printf("\n");
}*/
for (k = 0; k < n; k++) {
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if ((d[i][k] + d[k][j] < d[i][j] && (i == k || d[i][k] != 0) && (j == k || d[k][j] != 0))
|| (d[i][j] == 0 && i != j))
d[i][j] = d[i][k] + d[k][j];
}
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
fprintf(fo, "%d ", d[i][j]);
fprintf(fo, "\n");
}
fclose(fi);
fclose(fo);
return 0;
}