Pagini recente » Cod sursa (job #2709116) | Cod sursa (job #1296686) | Cod sursa (job #289152) | Cod sursa (job #508851) | Cod sursa (job #1455504)
#include <stdio.h>
unsigned int ** readMatrix (FILE *in, int *n) {
fscanf(in, "%d", n);
unsigned int **m = new unsigned int *[*n];
for (int i = 0; i < *n; ++i) {
m[i] = new unsigned int [*n];
for (int j = 0; j < *n; ++j) {
fscanf(in, "%ud", &m[i][j]);
}
}
return m;
}
void royfloyd (unsigned int **m, int n) {
for (int k = 0; k < n; ++k) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (m[i][k] && m[k][j]) {
unsigned int s = m[i][k] + m[k][j];
if (i != j && (s < m[i][j] || m[i][j] == 0)) m[i][j] = s;
}
}
}
}
}
int main (void) {
FILE *in = fopen("royfloyd.in", "r");
int n;
unsigned int **m = readMatrix(in, &n);
fclose(in);
royfloyd(m, n);
FILE *out = fopen("royfloyd.out", "w");
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
fprintf(out, "%d ", m[i][j]);
}
fprintf(out, "\n");
}
for (int i = 0; i < n; ++i) {
delete[] m[i];
}
delete[] m;
return 0;
}