Cod sursa(job #2316095)

Utilizator DawlauAndrei Blahovici Dawlau Data 11 ianuarie 2019 02:12:02
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <climits>
#include <algorithm>

using namespace std;

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

const int NMAX = 100;
const int Inf = INT_MAX;

int main() {

	int N;
	fin >> N;

	int cost[1 + NMAX][1 + NMAX];
	for(int i = 1; i <= N; ++i)
		for (int j = 1; j <= N; ++j) {

			fin >> cost[i][j];
			if (cost[i][j] == 0)
				cost[i][j] = Inf;
		}

	for (int k = 1; k <= N; ++k)
		for (int i = 1; i <= N; ++i)
			for (int j = 1; j <= N; ++j)
				if (cost[i][k] != Inf && cost[k][j] != Inf && i != j)
					cost[i][j] = min(cost[i][j], cost[i][k] + cost[k][j]);

	for (int i = 1; i <= N; ++i) {

		for (int j = 1; j <= N; ++j)
			if (cost[i][j] == Inf)
				fout << 0 << ' ';
			else
				fout << cost[i][j] << ' ';
		fout << '\n';
	}
}