Cod sursa(job #1145452)

Utilizator SilverGSilver Gains SilverG Data 18 martie 2014 10:45:51
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
/*
    Keep It Simple!
*/

#include<stdio.h>
#include<string.h>

#define MaxN 101
#define inf 1<<30

int RoyFloyd[MaxN][MaxN],N;

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

	scanf("%d",&N);

	memset(RoyFloyd,inf,sizeof(RoyFloyd));

	for(int i=1; i<=N; i++)
	   for(int j=1; j<=N; j++)
		scanf("%d",&RoyFloyd[i][j]);

	// Compute Min road value

	for(int k=1; k<=N; k++)
		for(int i=1; i<=N; i++)
			for(int j=1; j<=N; j++)
			{
				if( i != j && RoyFloyd[i][k]!=inf && RoyFloyd[k][j]!= inf && RoyFloyd[i][k] + RoyFloyd[k][j] < RoyFloyd[i][j] )
				    RoyFloyd[i][j] = RoyFloyd[i][k] + RoyFloyd[k][j];
			}
	for(int i=1; i<=N; i++)
	{
		for(int j=1; j<=N; j++)
		{
			if(RoyFloyd[i][j] == inf )
				printf("0 ");
			else
				printf("%d ",RoyFloyd[i][j]);
		}
		printf("\n");
    }
}