Pagini recente » Cod sursa (job #2884384) | Cod sursa (job #2159837) | Cod sursa (job #1266281) | Cod sursa (job #2978163) | Cod sursa (job #2888262)
#include <stdio.h>
#include <stdlib.h>
#include "errors.h"
#define MIN(x, y) ((x) < (y) ? (x) : (y))
#define INF 1e9
int main() {
int **graph, nr_nodes;
scanf("%d", &nr_nodes);
graph = malloc(nr_nodes * sizeof(int*));
DIE(!graph, "[malloc] failed\n");
for(int i = 0; i < nr_nodes; i++) {
graph[i] = calloc(nr_nodes, sizeof(int*));
DIE(!graph[i], "[calloc] failed\n");
}
for(int i = 0; i < nr_nodes; i++) {
for(int j = 0; j < nr_nodes; j++) {
scanf("%d", &graph[i][j]);
if (graph[i][j] == 0 && i !=j) {
graph[i][j] = INF;
}
}
}
for (int k = 0; k < nr_nodes; k++) {
for(int i = 0; i < nr_nodes; i++) {
for(int j = 0; j < nr_nodes; j++) {
if (i != j && i != k && k != j) {
graph[i][j] = MIN(graph[i][j], graph[i][k] + graph[k][j]);
}
}
}
}
for (int i = 0; i < nr_nodes; i++) {
for (int j = 0; j < nr_nodes; j++) {
printf("%d ", (graph[i][j] != INF ? graph[i][j] : 0));
}
printf("\n");
}
for (int i = 0; i < nr_nodes; i++) {
free(graph[i]);
}
free(graph);
return 0;
}