Cod sursa(job #565774)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 28 martie 2011 11:52:24
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
using namespace std;
#define OO (1 << 29) - 2
#define DIM 105

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

int N, C[DIM][DIM];

int main ()
{
	int i, j, k; 
	
	fi >> N;
	for (i = 1; i <= N; i++)
		for (j = 1; j <= N; j++)
		{
			fi >> C[i][j];
			if (i != j && C[i][j] == 0)
				C[i][j] = OO;
		}
	
	for (k = 1; k <= N; k++)
		for (i = 1; i <= N; i++)
			for (j = 1; j <= N; j++)
				if (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++)
			fo << (C[i][j] == OO ? 0 : C[i][j]) << ' ';
		fo << '\n';
	}
	return 0;
}