Cod sursa(job #1094777)

Utilizator robert_stefanRobert Stefan robert_stefan Data 29 ianuarie 2014 20:26:31
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#define IN "royfloyd.in"
#define OUT "royfloyd.out"
#define NMAX 105

using namespace std;

int main()
{
	ifstream in(IN);
	ofstream out(OUT);
	int i, j, k, n, a[NMAX][NMAX];
	in>>n;
	for(i = 1; i <= n; ++i)
		for(j = 1; j <= n; ++j)
			in>>a[i][j];
	for(k = 1; k <= n; ++k)
		for(i = 1; i <= n; ++i)
			for(j = 1; j <= n; ++j)
				if( a[i][k] && a[k][j] && i!=j && ( a[i][j] > a[i][k] + a[k][j] || a[i][j]==0 ) )
					a[i][j] = a[i][k] + a[k][j];
	for(i = 1; i <= n; ++i)
	{
		for(j = 1; j <= n; ++j)
			out<<a[i][j]<<' ';
		out<<'\n';
	}
	in.close();
	out.close();
	return 0;
}