Cod sursa(job #2334585)

Utilizator AndreiBadescuBadescu Andrei-Octavian AndreiBadescu Data 2 februarie 2019 18:31:27
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>

using namespace std;
typedef unsigned int uint;

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

int main()
{
	uint n;
	fin >> n;

	uint a[n][n];

	for (size_t i = 0; i < n; ++i)
		for (size_t j = 0; j < n; ++j)
			fin >> a[i][j];

	for (size_t i = 0; i < n; ++i)
		for (size_t j = 0; j < n; ++j)
			for (size_t k = 0; k < n; ++k)
				if (a[i][j] && a[j][k] && i != k)
					if (a[i][k])
						a[i][k] = min(a[i][k], a[i][j] + a[j][k]);
					else
						a[i][k] = a[i][j] + a[j][k];

	for (size_t i = 0; i < n; ++i, fout << '\n')
		for (size_t j = 0; j < n; ++j)
			fout << a[i][j] << ' ';
}