Cod sursa(job #1232022)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 21 septembrie 2014 21:38:21
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 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] << " ";
		ofs << "\n";	
	}
					
	return 0;
}