Cod sursa(job #1314364)

Utilizator superman_01Avramescu Cristian superman_01 Data 11 ianuarie 2015 19:50:55
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#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];
}

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[i][k] and Sol[k][j])
                   Sol[i][j] = get_min( Sol[i][j] , Sol[i][k]+Sol[k][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;
}