Cod sursa(job #145261)

Utilizator sima_cotizoSima Cotizo sima_cotizo Data 28 februarie 2008 17:28:47
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <cstdio>

const long MAX = 111;
long i,j,k,n;
long A[MAX][MAX];

inline long min(long a, long b) { return a<b ? a : b; }

int main() {
	freopen("royfloyd.in", "r", stdin);
	scanf("%ld", &n);
	for (i=1; i<=n; ++i)
		for (j=1; j<=n; ++j)
			scanf("%ld", A[i]+j);
	fclose(stdin);
	
	for (k=1; k<=n; ++k)
		for (i=1; i<=n; ++i)
			for (j=1; j<=n; ++j)
				if ( i!=j && A[i][k] && A[k][j] )
					A[i][j] = min(A[i][j], A[i][k]+A[k][j]);

	freopen("royfloyd.out", "w", stdout);
	for (i=1; i<=n; ++i) {
		for (j=1; j<=n; ++j)
			printf("%ld ", A[i][j]);
		printf("\n");
	}
	return 0;
}