Pagini recente » Cod sursa (job #169812) | Cod sursa (job #1695200) | Cod sursa (job #3142785) | Cod sursa (job #2862051) | Cod sursa (job #1314424)
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
#define NMAX 105
#define get_min(a,b) ((a)<(b)?(a):(b))
using namespace std;
ifstream in ("royfloyd.in");
ofstream out ( "royfloyd.out" );
int Graph[NMAX][NMAX];
int N , M ;
int Sol[NMAX][NMAX];
void Read( void ){
int i , j ;
in >> N ;
for ( i = 1 ; i <= N ; ++i )
for ( j = 1 ; j <= N ; ++j )
in >> Graph[i][j] , Sol[i][j] = Graph[i][j];
}
void RoyFloyd ( void ) {
int i , j , k ;
for ( i = 1 ; i <= N ; ++i )
for ( k =1 ; k <= N ; ++k )
for ( j = 1 ; j <= N ; ++j )
if ( Sol[k][i] and Sol[i][j] and k != j and i != j and k != i )
Sol[k][j] = get_min( Sol[k][j] , Sol[k][i]+Sol[i][j]);
}
void Write ( void )
{
int i , j ;
for ( i = 1 ; i <= N ; ++i ){
for ( j = 1 ; j <= N ; ++j )
out << Sol[i][j] << " ";
out << "\n";
}
}
int main(){
Read();
RoyFloyd();
Write();
return 0;
}