Cod sursa(job #444083)

Utilizator mottyMatei-Dan Epure motty Data 19 aprilie 2010 12:56:44
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<stdio.h>

const int N=128;

int n,g[N][N];

void read()
{
	scanf("%d",&n);
	for( int i=1; i<=n; ++i)
		for( int j=1; j<=n; ++j)
			scanf("%d",&g[i][j]);
}

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

void print()
{
	for( int i=1; i<=n; ++i, printf("\n"))
		for( int j=1; j<=n; ++j)
			printf("%d ",g[i][j]);
}

int main()
{
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	read();
	solve();
	print();
	return 0;
}