Cod sursa(job #806938)

Utilizator BitOneSAlexandru BitOne Data 3 noiembrie 2012 19:04:24
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdlib>
#include <fstream>

using namespace std;

const int NMAX = 111;
const int oo   = 1 << 29;

int main()
{
	int N, i, j, k;
	int C[NMAX][NMAX];
	ifstream in("royfloyd.in");
	ofstream out("royfloyd.out");
	
	in >> N;
	for(i = 1; i <= N; ++i)
	{
		for(j = 1; j <= N; ++j)
		{
			in >> C[i][j];
			C[i][j] = 0 == C[i][j] ? oo : C[i][j];
		}
	}
	
	for(k = 1; k <= N; ++k)
	{
		for(i = 1; i <= N; ++i)
		{
			if(k != i)
			{
				for(j= 1; j <= N; ++j)
				{
					if(k != j && i != j && C[i][j] > C[i][k] + C[k][j])
					{
						C[i][j] = C[i][k] + C[k][j];
					}
				}
			}
		}
	}
	
	for(i = 1; i <= N; ++i)
	{
		for(j = 1; j <= N; ++j )
		{
			out << (oo == C[i][j] ? 0 : C[i][j]) << ' ';
		}
		out << '\n';
	}
	
	return EXIT_SUCCESS;
}