Cod sursa(job #341698)

Utilizator Binary_FireFlorin Pogocsan Binary_Fire Data 19 august 2009 12:32:20
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <map>
#include <set>

using namespace std;

#define mp make_pair
#define pb push_back
#define sz(c) (int)((c).size())
#define f first
#define s second

#define fin  "royfloyd.in"
#define fout "royfloyd.out"

#define NMAX 101

int N, d[NMAX][NMAX];

void ReadData()
{
	ifstream f(fin);

	f >> N;
	for ( int i = 1; i <= N; ++i )
	for ( int j = 1; j <= N; ++j )
		f >> d[i][j];

	f.close();
}

void Solve()
{
	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] == 0 || d[i][j] > d[i][k] + d[k][j] ) )
			d[i][j] = d[i][k] + d[k][j];
}

void PrintSol()
{
	ofstream f(fout);

	for ( int i = 1; i <= N; ++i )
	{
		for ( int j = 1; j <= N; ++j )
			f << d[i][j] << " ";
		f << endl;
	}

	f.close();
}

int main()
{
	ReadData();
	Solve();
	PrintSol();
	return 0;
}