Cod sursa(job #157516)

Utilizator amadaeusLucian Boca amadaeus Data 13 martie 2008 02:44:55
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <stdlib.h>

#define NX 128
#define INF 0x3f3f3f3f

int A[ NX ][ NX ], D[ NX ][ NX ];
int N;

void cit() {
	int i, j, x;

	scanf( "%d", &N );
	for( i = 1; i <= N; i++ )
		for( j = 1; j <= N; j++ ) {
			scanf( "%d", &x );
			D[i][j] = A[i][j] = x ? x : ( i == j ? 0 : INF );
		}
}

void rez() {
	int i, j, k;

	for( k = 1; k <= N; k++ )
		for( i = 1; i <= N; i++ )
			for( j = 1; j <= N; j++ )
				if( D[i][j] > D[i][k] + D[k][j] )
					D[i][j] = D[i][k] + D[k][j];
}

void scr() {
	int i, j;

	for( i = 1; i <= N; i++ ) {
		for( j = 1; j <= N; j++ )
			printf( "%d ", D[i][j] );
		printf( "\n" );
	}
}


int main() {
	freopen( "royfloyd.in", "r", stdin );
	freopen( "royfloyd.out", "w", stdout );

	cit();
	rez();
	scr();

	return 0;
}