Pagini recente » Cod sursa (job #1428352) | Cod sursa (job #308263) | Cod sursa (job #3151943) | Cod sursa (job #869617) | Cod sursa (job #169800)
Cod sursa(job #169800)
#include <stdio.h>
#include <stdlib.h>
void write(int **data, int n, FILE *fout);
int **allocate(int n) {
int **data, i, j;
data=(int **)malloc(n*sizeof(int *));
for (i=0; i<n; i++) {
data[i]=(int *)malloc(n*sizeof(int));
for (j=0; j<n; j++)
data[i][j]=0;
}
return data;
}
void read(int **data, int n, FILE *fin) {
int i, j;
for (i=0; i<n; i++) {
for (j=0; j<n; j++) {
fscanf(fin, "%d", &data[i][j]);
}
}
}
void royfloyd(int **data, int n, FILE *fout) {
int i, j, k;
for (k=0; k<n; k++) {
for (i=0; i<n; i++) {
for (j=0; j<n; j++) {
if (i!=j && data[i][k] && data[k][j] && (data[i][j] >(data[i][k]
+data[k][j]) || !data[i][j]))
data[i][j]=data[i][k]+data[k][j];
}
}
}
write(data, n, fout);
}
void write(int **data, int n, FILE *fout) {
int i, j;
for (i=0; i<n; i++) {
for (j=0; j<n; j++) {
fprintf(fout, "%d ", data[i][j]);
}
fprintf(fout, "\n");
}
}
int main() {
int **data, n;
FILE *fin, *fout;
fin=fopen("royfloyd.in", "rt");
fout=fopen("royfloyd.out", "wt");
fscanf(fin, "%d", &n);
data=allocate(n);
read(data, n, fin);
royfloyd(data, n, fout);
fclose(fin);
return 0;
}