Cod sursa(job #1999518)

Utilizator epermesterNagy Edward epermester Data 11 iulie 2017 13:07:03
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;

int main() {
	ifstream in("royfloyd.in");

	short N;
	in >> N;

	int** hossz = new int*[N];
	for (short i = 0;i < N;++i) hossz[i] = new int[N];

	for (short i = 0;i < N;++i)
		for (short j = 0;j < N;++j) {
			in >> hossz[i][j];
			if (!hossz[i][j] && i != j)
				hossz[i][j] = 1 << 30;
		}
	in.close();

	for (short k = 0;k < N;++k)
		for (short i = 0;i < N;++i)
			for (short j = 0;j < N;++j) 
				if (hossz[i][j] > hossz[i][k] + hossz[k][j])
					hossz[i][j] = hossz[i][k] + hossz[k][j];

	ofstream out("royfloyd.out");
	for (short i = 0;i < N;++i) {
		for (short j = 0;j < N;++j)
			if (hossz[i][j] >= (1 << 30)) out << 0;
			else out << hossz[i][j] << " ";
		out << "\n";
	}
	out.close();
}