Cod sursa(job #176907)

Utilizator vladcyb1Vlad Berteanu vladcyb1 Data 11 aprilie 2008 21:58:18
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>

#define FIN "royfloyd.in"
#define FOUT "royfloyd.out"
#define NMAX 101

FILE * fin, * fout;
int A[NMAX][NMAX];
int N;

void RoyFloyd()
{
	int i, j, k;
	for( k = 1; k <= N; k++ )
		for( i = 1; i <= N; i++ )
			for( j = 1; j <= N; j++ )
				if( A[i][k] && A[k][j] )
					if( (A[i][j] > A[i][k] + A[k][j]) 
					     || !A[i][j] )
						A[i][j] = A[i][k] + A[k][j];
				
}
int main()
{
	int i, j;
	fin = fopen( FIN, "r" );
	fout = fopen( FOUT, "w" );
	fscanf( fin, "%d", &N );
	for( i = 1; i <= N; i++ )
		for( j = 1; j <= N; j++ )
			fscanf( fin, "%d", &A[i][j]);
	RoyFloyd();
	for( i = 1; i <= N; i++ )
	{
		for( j = 1; j <= N; j++ )
			fprintf( fout, "%d ", A[i][j]);
		fprintf( fout, "\n");
	}
	fclose(fin);
	fclose(fout);
	
}