Cod sursa(job #783406)

Utilizator bocacristiBoca Nelu Cristian bocacristi Data 2 septembrie 2012 19:26:28
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

int a[101][101], n;

void Citire();
void RF();

int main()
{
	Citire();
	RF();
	for ( int i = 1; i <= n; ++i )
	{
		for ( int j = 1; j <= n; ++j )
		{
			fout << a[i][j] << ' ';
		
		}
		fout << '\n';
	}
}

void Citire()
{
	fin >> n;
	
	for ( int i = 1; i <= n; ++i )
	{
		for ( int j = 1; j <= n; ++j )
		{
			fin >> a[i][j];
		}
	}
}

void RF()
{
	for ( int i = 1; i <= n; ++i )
	{
		for ( int j = 1; j <= n; ++j )
		{
			for ( int k = 1; k <= n; ++k )
			{
				if ( a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j )
				{
					a[i][j] = a[i][k] + a[k][j];
				}
			}
		}
	}
}