Cod sursa(job #904122)

Utilizator stef1995mmarcu stefan ovidiu stef1995m Data 3 martie 2013 19:17:42
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
using namespace std;
FILE *f=fopen("royfloyd.in","r"),*g=fopen("royfloyd.out","w");

const int maxn=105;
int n,x[maxn][maxn],i,j,k;

void read()
{
	fscanf(f , "%d" , &n );
	for( i=1 ; i<=n ; i++ )
		for( j=1 ; j<=n ; j++ )
			fscanf(f , "%d" , &x[i][j] );
}

void write()
{
	for( i=1 ; i<=n ; i++ , fprintf(g , "\n" ) )
		for( j=1 ; j<=n ; j++)
			fprintf(g , "%d " , x[i][j] );
}

int main()
{
	read();
	
	for( i=1 ; i<=n ; i++ )
		for( j=1 ; j<=n ; j++ )
			for( k=1 ; k<=n ; k++ )
				if( x[j][i] && x[i][k] && (x[j][k] > x[j][i] + x[i][k] || !x[j][k] ) && k!=j )
					x[j][k] = x[j][i] + x[i][k] ;
	
	write();
	
	return 0;
}