Cod sursa(job #749213)

Utilizator joli94Apostol Adrian Alexandru joli94 Data 16 mai 2012 08:46:37
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>

const int N = 1<<9;

int a[N][N] , n;

void read()
{
	freopen ( "royfloyd.in" , "r" , stdin ) ;
	freopen ( "royfloyd.out" , "w" , stdout ) ;
	
	scanf ( "%d", &n );
	
	for ( int i=1 ; i<=n ; ++i )
		for( int j=1 ; j<=n ; ++j )
			scanf( "%d" , &a[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 (a[k][j]&&a[i][k]&&(a[i][j]>a[i][k]+a[k][j] || !a[i][j])&&i!=j) a[i][j] = a[i][k] + a[k][j];
}

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

int main()
{
	read();
	solve();
	print();
	return 0;
}