Cod sursa(job #700201)

Utilizator andytisaMoisuc Andrei andytisa Data 1 martie 2012 03:41:29
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#define NMAX 101
using namespace std;
int n,a[NMAX][NMAX];
void afisare(){
  ofstream fo("royfloyd.out");
   for (int i=0; i<n; i++){
      for (int j=0; j<n; j++){
        fo << a[i][j] << " ";
      }
      fo << '\n';
    }
}
int royfloyd(){
  int i,j,k;
  for ( k = 0; k < n; k++ )
      for ( i = 0; i < n; i++ )

         for ( j = 0; j < n; j++ ){
if(a[i][k] && a[k][j] && (a[i][k] + a[k][j] < a[i][j] || !a[i][j]) && i != j)
a[i][j] = a[i][k] + a[k][j];
}
}
int main()
{
    ifstream fi("royfloyd.in");
    fi >> n;
    for (int i=0; i<n; i++){
      for (int j=0; j<n; j++){
        fi >> a[i][j];
      }
    }
    royfloyd();
    afisare();

    return 0;
}