Cod sursa(job #343156)

Utilizator aghamatMorariu Razvan aghamat Data 25 august 2009 10:44:40
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
#define DIM 105

int a[DIM][DIM], i, j, n, k;

void roy_floyd()
{
	for (k=1; k<=n; ++k)
		for (i=1; i<=n; ++i)
			for (j=1; j<=n; ++j)
				if (a[i][k] && a[k][j] && i!=j && (a[i][j]>a[i][k]+a[k][j] || !a[i][j]))
					a[i][j]=a[k][j]+a[i][k];
}

int main()
{
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	scanf("%d",&n);
	for (i=1; i<=n; ++i)
    	for (j=1; j<=n; ++j)
			scanf("%d",&a[i][j]);
	roy_floyd();
	for (i=1; i<=n; ++i)
		{
			for (j=1; j<=n; ++j)
				printf("%d ",a[i][j]);
            printf("\n");
		}
	return 0;
}