Cod sursa(job #1298034)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 22 decembrie 2014 15:08:29
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <vector>
#include <limits>

const unsigned INF=std::numeric_limits<unsigned>::max()>>1;

int main(){
	std::ifstream fin("royfloyd.in");
	std::ofstream fout("royfloyd.out");

	unsigned n;
	fin>>n;
	std::vector< std::vector<unsigned> > d(n,std::vector<unsigned>(n));
	for(unsigned i=0;i<n;++i)
		for(unsigned j=0;j<n;++j){
			unsigned x;
			fin>>x;
			if(x==0) d[i][j]=INF;
			else d[i][j]=x;
		}

	for(unsigned k=0;k<n;++k)
		for(unsigned i=0;i<n;++i)
			for(unsigned j=0;j<n;++j)
				if(d[i][j] > d[i][k]+d[k][j])
					d[i][j] = d[i][k]+d[k][j];

	for(unsigned i=0;i<n;++i){
		for(unsigned j=0;j<n;++j)
			if(d[i][j]==INF||i==j) fout<<"0 ";
			else fout<<d[i][j]<<' ';
		fout<<'\n';
	}
}