Cod sursa(job #745098)

Utilizator fhandreiAndrei Hareza fhandrei Data 10 mai 2012 15:42:41
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
//Include
#include <fstream>
#include <algorithm>
using namespace std;

//Constante
const int MAX_SIZE = 101;
const int oo = (1<<30) - 1;

//Variabile
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");

int nodes;
int adiacence[MAX_SIZE][MAX_SIZE];

//Main
int main()
{
	in >> nodes;
	for(int i=1 ; i<=nodes ; ++i)
		for(int j=1 ; j<=nodes ; ++j)
		{
			in >> adiacence[i][j];
			if(i!=j && !adiacence[i][j])
				adiacence[i][j] = oo;
		}
	
	
	for(int k=1 ; k<=nodes ; ++k)
		for(int i=1 ; i<=nodes ; ++i)
		{
			if(i==k)
				continue;
			for(int j=1 ; j<=nodes ; ++j)
				adiacence[i][j] = min(adiacence[i][j], adiacence[i][k] + adiacence[k][j]);
		}
	
	for(int i=1 ; i<=nodes ; ++i, out << '\n')
		for(int j=1 ; j<=nodes ; ++j)
			out << (adiacence[i][j] == oo? 0 : adiacence[i][j]) << ' ';
	
	in.close();
	out.close();
	return 0;
}