Cod sursa(job #2167028)

Utilizator AlexnolifeAlexandru Ica Alexnolife Data 13 martie 2018 19:52:48
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <array>
#include <algorithm>

std::ofstream g("royfloyd.out");
std::ifstream f("royfloyd.in");

template<int rows, int cols>
using Matrix = std::array<std::array<int, cols>, rows>;

Matrix<100, 100> A;
size_t numberOfNodes;

void Read()
{
	f >> numberOfNodes;

	for (size_t i = 0U; i < numberOfNodes; ++i) {
		for (size_t j = 0U; j < numberOfNodes; ++j) {
			f >> A[i][j];
		}
	}
}

void RoyFloyd()
{
	for (size_t k = 0U; k < numberOfNodes; ++k) 
		for (size_t i = 0U; i < numberOfNodes; ++i) 
			for (size_t j = 0U; j < numberOfNodes; ++j) 
				if (A[i][j] > A[i][k] + A[k][j])
					A[i][j] = A[i][k] + A[k][j];
}

void Print()
{
	for (size_t i = 0U; i < numberOfNodes; ++i) {
		for (size_t j = 0U; j < numberOfNodes; ++j) {
			g << A[i][j] << ' ';
		}
		g << '\n';
	}
}

int main(int argc, char * argv[])
{
	Read();
	RoyFloyd();
	Print();

	return 0;
}