Cod sursa(job #1370639)

Utilizator Mr.DoomRaul Ignatus Mr.Doom Data 3 martie 2015 16:13:25
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
using namespace std;

ifstream is("royfloyd.in");
ofstream os("royfloyd.out");

int D[101][101];
int n;

void Read();
void Floyd();
void Write();

int main()
{
	Read();
	Floyd();
	Write();
	
	is.close();
	os.close();
	return 0;
}

void Read()
{
	is >> n;
	for ( int i = 1; i <= n; ++i )
		for ( int j = 1; j <= n; ++j )
			is >> D[i][j];
}
void Floyd()
{
	for ( int k = 1; k <= n; ++k )
		for ( int i = 1; i <= n; ++i )
			for ( int j = 1; j <= n; ++j )
				if ( D[i][k] && D[k][j] && ( D[i][j] > D[i][k] + D[k][j] || !D[i][j] ) && i != j )
					D[i][j] = D[i][k] + D[k][j];
}
void Write()
{
	for ( int i = 1; i <= n; ++i )
	{
		for ( int j = 1; j <= n; ++j )
			os << D[i][j] << ' ';
		os << '\n';
	}
}