Cod sursa(job #379058)

Utilizator alexandru92alexandru alexandru92 Data 30 decembrie 2009 13:49:08
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <vector>
#include <fstream>
#define pb push_back
#define INF 0x3f3f3f3f

/*
 *
 */
 using namespace std;
 vector< vector<int> > v;
 inline int min( int x, int y )
 {
	return y^( (x^y) & -(x<y) );
}
 int main()
 {int n, i, j, k, x;
	ifstream in("royfloyd.in");
	in>>n;
	v.resize(n);
	for( i=0; i < n; ++i )
		for( j=0; j < n; ++j)
		{
			in>>x;
			if( 0 == x )
				v[i].pb(INF);
			else v[i].pb(x);
		}
	for( k=0; k < n; ++k )
		for( i=0; i < n; ++i )
			for( j=0; j < n; ++j )
				if( i !=j )
				  v[i][j]=min( v[i][j], v[i][k]+v[k][j] );
	ofstream out("royfloyd.out");
	for( i=0; i < n; ++i )
	{
		for( j=0; j < n; ++j )
		{
			if( INF == v[i][j] )
				out<<"0 ";
			else out<<v[i][j]<<' ';
		}
		out<<'\n';
	}
	return 0;
}