Cod sursa(job #700391)

Utilizator avram_florinavram florin constantin avram_florin Data 1 martie 2012 09:56:07
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<cstdio>

using namespace std;

const int MaxN = 101;

const char InFile[] = "royfloyd.in";
const char OutFile[] = "royfloyd.out";

int N,d[MaxN][MaxN];

int main()
{
	freopen( InFile , "r" , stdin );
	freopen( OutFile , "w" , stdout );
	scanf("%d" , &N );
	int i,j,k;
	for( i = 1 ; i <= N ; i++ )
		for( j = 1 ; j <= N ; j++ )
			scanf("%d" , &d[i][j] );
	for( k = 1 ; k <= N ; k++ )
		for( i = 1 ; i <= N ; i++ )
			for( j = 1 ; j <= N ; j++ )
				if( i != j && d[i][k] != 0 && d[k][j] != 0 && ( d[i][j] == 0 || d[i][j] > d[i][k] +  d[k][j]) )
					d[i][j] = d[i][k] + d[k][j];
	for( i = 1 ; i <= N ; i++ )
		{
			for( j = 1 ; j < N ; j++ )
				printf("%d " , d[i][j] );
			printf("%d\n" , d[i][N] );
		}
	return 0;
}