Cod sursa(job #2976450)

Utilizator the_horoHorodniceanu Andrei the_horo Data 9 februarie 2023 10:42:21
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <algorithm>
#include <fstream>

int mat[100][100];

constexpr int INF = 1000000000;

int main () {
	std::ifstream in("royfloyd.in");
	in.exceptions(std::ifstream::failbit);
	std::ofstream out("royfloyd.out");
	out.exceptions(std::ofstream::failbit);

	int n;
	in >> n;

	for (int i = 0; i < n; ++ i)
		for (int j = 0; j < n; ++ j) {
			in >> mat[i][j];

			if (mat[i][j] == 0 && i != j)
				mat[i][j] = INF;
		}


	for (int k = 0; k < n; ++ k)
		for (int i = 0; i < n; ++ i)
			for (int j = 0; j < n; ++ j)
				mat[i][j] = std::min(mat[i][j], mat[i][k] + mat[k][j]);

	for (int i = 0; i < n; ++ i) {
		for (int j = 0; j < n; ++ j) {
			if (mat[i][j] == 0 && i != j)
				out << "0 ";
			else
				out << mat[i][j] << ' ';
		}
		out << '\n';
	}
}