Cod sursa(job #547929)

Utilizator avram_florinavram florin constantin avram_florin Data 6 martie 2011 20:27:13
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>

using namespace std;
const int MaxN = 101;

int n,c[MaxN][MaxN];

inline void read()
{
	ifstream f("royfloyd.in");
	f >> n;
	for( int i = 1 ; i <= n ; i++ )
		for( int j = 1 ; j <= n ; j++ )
			f >> c[i][j];
	f.close();
}

inline void roy_floyd()
{
	int i,j,k;
	for( k = 1 ; k <= n ; k++ )
		for( i = 1 ; i <= n ; i++ )
			for( j = 1 ; j <= n ; j++ )
				if( i != j && c[i][k] && c[k][j] && (c[i][j] > c[i][k]+c[k][j] || !c[i][j]) )
					c[i][j] = c[i][k] + c[k][j];
}

inline void print()
{
	int i,j;
	ofstream g ("royfloyd.out");
	for(i = 1 ; i <= n ; i++ )
		{
			for( j = 1 ; j < n ; j++ )
				g << c[i][j] << ' ';
			g << c[i][n] << '\n';
		}
	g.close();
}

int main()
{
	read();
	roy_floyd();
	print();
	return 0;
}