Cod sursa(job #780008)

Utilizator crushackPopescu Silviu crushack Data 19 august 2012 17:33:37
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>
#define oo 0x3f3f3f3f
#define NMax 110

const char IN[]="royfloyd.in",OUT[]="royfloyd.out";

int N;
int A[NMax][NMax];

int main()
{
	int i,j,k;
	freopen(IN,"r",stdin);
	scanf("%d",&N);
	for (i=1;i<=N;++i)
		for (j=1;j<=N;++j)
			scanf("%d",&A[i][j]),
			A[i][j]+= i!=j && !A[i][j] ? oo : 0;
	fclose(stdin);

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

	freopen(OUT,"w",stdout);
	for (i=1;i<=N;++i,printf("\n")) for (j=1;j<=N;++j) printf("%d ",A[i][j]==oo ? 0 : A[i][j]);
	fclose(stdout);
	return 0;
}