Cod sursa(job #1128441)

Utilizator axnsanCristi Vijdea axnsan Data 27 februarie 2014 17:06:02
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#ifdef __INFOARENA_PROJ
#include "infoarena.h"
#endif

#include <fstream>
#include <algorithm>

#ifdef __INFOARENA_PROJ
namespace royfloyd {
#endif

unsigned const int maxN = 1000;
unsigned const short INF = (unsigned short)-1;

int main()
{
	std::ifstream in("royfloyd.in");
	std::ofstream out("royfloyd.out");
	int N;
	in >> N;
	unsigned short D[maxN + 1][maxN + 1];

	for (int i = 1; i <= N; ++i)
	{
		for (int j = 1; j <= N; ++j)
		{
			in >> D[i][j];
			if (D[i][j] == 0)
				D[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 (i != j && D[i][k] + D[k][j] < D[i][j])
					D[i][j] = D[i][k] + D[k][j];

	for (int i = 1; i <= N; ++i) 
	{
		for (int j = 1; j <= N; ++j)
		{
			if (D[i][j] == INF)
				D[i][j] = 0;
			out << D[i][j] << ' ';
		}
		out << '\n';
	}
	return 0;
}

#ifdef __INFOARENA_PROJ
}
#endif

int D[100][100];
void roy() //cel mai scurt drum intre oricare 2 noduri
{
	
}