Cod sursa(job #964058)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 19 iunie 2013 23:46:14
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("test.in");
ofstream g("test.out");
#define lmax 111
#define inf 0xffffff
int n, cc[lmax][lmax];

void roy_floyd(){
	for(int i=0;i<n;i++)
	for(int j=0;j<n;j++) cc[i][j] == 0 ? cc[i][j] = inf : 1;
	for(int k=0;k<n;k++)
	for(int i=0;i<n;i++)
	for(int j=0;j<n;j++)
	if(i!=k && k!=j && i!=j) cc[i][j] = min(cc[i][j], cc[i][k]+cc[k][j]);
}

int main(){
	f >> n;
	
	for(int i=0;i<n;i++)
	for(int j=0;j<n;j++) 
		f >> cc[i][j];
	roy_floyd();
	
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
			g << (cc[i][j] == inf ? 0 : cc[i][j]) << " " ;
		g << "\n";
	}
		
	return 0;
}