Cod sursa(job #1232020)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 21 septembrie 2014 21:36:12
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>
#define SIZE 100
using namespace std;

#define MIN(a, b) ((a) > (b) ? (a) : (b))

int main()
{
	ifstream ifs("royfloyd.in");
	ofstream ofs("royfloyd.out");
	
	int n; ifs >> n;
	int D[SIZE][SIZE];
	
	for (int i = 0; i < n; ++i)
		for (int j = 0; j < n; ++j)
			ifs >> D[i][j];
	
	for (int k = 0; k < n; ++k)
		for (int i = 0; i < n; ++i)
			for (int j = 0; j < n; ++j)
				if (D[i][k] && D[k][j])
					D[i][j] = (D[i][j] ? MIN(D[i][j], D[i][k] + D[k][j]) : D[i][j]);

	for (int i = 0; i < n; ++i)
		for (int j = 0; j < n; ++j)
			ofs << D[i][j];
					
	return 0;
}