Cod sursa(job #1426473)

Utilizator gabi.cristacheGabi Cristache gabi.cristache Data 29 aprilie 2015 19:26:52
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>

#define MaxN 105

using namespace std;

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

int N, M[MaxN][MaxN];

int main() {
	fin >> N;

	for (int i = 1; i <= N; ++i)
		for (int j = 1; j <= N; ++j)
			fin >> M[i][j];

	for (int k = 1; k <= N; ++k)
		for (int i = 1; i <= N; ++i)
			for (int j = 1; j <= N; ++j)
				if (M[i][k] && M[k][j] && (M[i][j] > M[i][k] + M[k][j] || !M[i][j]) && i != j)
					M[i][j] = M[i][k] + M[k][j];

	for (int i = 1; i <= N; ++i) {
		for (int j = 1; j <= N; ++j) {
			fout << M[i][j] << ' ';
		}
		fout << '\n';
	}

	return 0;
}