Cod sursa(job #2794299)

Utilizator schizofrenieShallan Davar schizofrenie Data 4 noiembrie 2021 17:13:42
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <sys/param.h>

#define MAXN 100
#define INF 0x7fffffff

unsigned int drum_minim[MAXN][MAXN];

int main () {
	int n;
	int i, j, k;

	freopen("royfloyd.in",  "r",  stdin);
	freopen("royfloyd.out", "w", stdout);

	scanf("%d", &n);

	for (i = 0; i != n; ++ i) {
		for (j = 0; j != n; ++ j) {
			scanf("%d", &drum_minim[i][j]);
			if (drum_minim[i][j] == 0 && i != j)
				drum_minim[i][j] = INF;
		}
	}

	for (k = 0; k != n; ++ k)
		for (i = 0; i != n; ++ i)
			for (j = 0; j != n; ++ j)
				drum_minim[i][j] = MIN(
				     drum_minim[i][k] +
				     drum_minim[k][j],
				     drum_minim[i][j]);

	for (i = 0; i != n; ++ i, putchar('\n'))
		for (j = 0; j != n; ++ j) {
			if (drum_minim[i][j] == INF)
				fputs("0 ", stdout);
			else
				printf("%d ", drum_minim[i][j]);
		}

	return 0;
}