Cod sursa(job #495399)

Utilizator IgnitionMihai Moraru Ignition Data 24 octombrie 2010 23:36:46
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.53 kb
#include <stdio.h>

#define MN (100)

int main()
{
	int N, i, j, k;
	int g[MN][MN];

	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", &g[i][j]);

	for(k = 0; k < N; ++k) for(i = 0; i < N; ++i) for(j = 0; j < N; ++j)
		if(i != j && g[i][k] && g[k][j] && g[i][k]+g[k][j] < g[i][j])
			g[i][j] = g[i][k]+g[k][j];

	for(i = 0; i < N; ++i) {
		for(j = 0; j < N-1; ++j)
			printf("%d ", g[i][j]);
		printf("%d\n", g[i][j]);
	}

	return 0;
}