Cod sursa(job #149367)

Utilizator iondionGeorge Pascu iondion Data 5 martie 2008 17:17:57
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#define NMax 105
using namespace std;
int A[NMax][NMax], n;

void citire()
{
     ifstream fin("royfloyd.in");
     fin >> n;
     for( int i=1; i<=n; i++ )
          for( int j=1; j<=n; j++ )
               fin >> A[i][j];
     fin.close();
}

void RF()
{
     for( int k=1; k<=n; k++ )
          for( int i=1; i<=n; i++ )
               for( int j=1; j<=n; j++ )
                    if( A[i][k] && A[k][j] && A[i][j] > A[i][k]+A[k][j] ) A[i][j] = A[i][k]+A[k][j];
}

void afisare()
{
     ofstream fout("royfloyd.out");
     for( int i=1; i<=n; i++ )
     {
          for( int j=1; j<=n; j++ )
               fout << A[i][j] << ' ';
          fout << '\n';
     }
     fout.close();
}

int main()
{
      citire();
      RF();
      afisare();
      return 0;
}