Cod sursa(job #1713356)

Utilizator ThalorynIonut Duduc Thaloryn Data 5 iunie 2016 13:23:37
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
using namespace std;

#define MAX 101
#define min(a, b) ((a < b) ? a : b)

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

int N;

void Floyd_Warshall(int D[MAX][MAX]) {

	int DNew[MAX][MAX];

	for (int k = 1; k <= N; ++k) {
		for (int i = 1; i <= N; ++i)
			for (int j = 1; j <= N; ++j)
				DNew[i][j] = min(D[i][j], D[i][k] + D[k][j]);
		D = DNew;
	}

	for (int i = 1; i <= N; ++i) {
		for (int j = 1; j <= N; ++j)
			out << D[i][j] << " ";
		out << endl;
	}
}

int main()
{	
	in >> N;
	int D[MAX][MAX];

	for (int i = 1; i <= N; ++i)
		for (int j = 1; j <= N; ++j)
			in >> D[i][j];

	Floyd_Warshall(D);

	return 0;
}