Cod sursa(job #584085)

Utilizator XbyteAvram Florin Xbyte Data 23 aprilie 2011 20:57:39
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 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 );
	int i,j,k;
	scanf("%d" , &N);
	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 && j != k && i != k && D[i][k] && D[k][j] && (D[i][j] > D[i][k] + D[k][j] || !D[i][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("\n");
		}
	return 0;
}