Cod sursa(job #651068)

Utilizator juliussSimion Stefan juliuss Data 19 decembrie 2011 18:28:12
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#define MAXN 105

int M[MAXN][MAXN], n;

int
main(void)
{
	int k, i, j;
	
	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", &M[i][j]);

	for(k = 0; k < n; k++)
		for(i = 0; i < n; i++)
			for(j = 0; j < n; j++)
				if(i != j && M[i][k] && M[k][j] && (M[i][k] + M[k][j] < M[i][j] || M[i][j] == 0))
					M[i][j] = M[i][k] + M[k][j];
	
	for(i = 0; i < n; i++)
	{
		for(j = 0; j < n; j++)
			printf("%d ", M[i][j]);
		printf("\n");
	}
	
	return 0;
}