Cod sursa(job #615299)

Utilizator theodora_maneaManea Theodora Maria theodora_manea Data 9 octombrie 2011 12:17:34
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <string.h>

#define INF 0x3f3f3f
#define max_n 101

using namespace std;

int d[max_n][max_n];
int i,j,k,n;

ifstream in("royfloyd.in");
ofstream out("royfloyd.out");

int main () {
   in >> n;
   memset(d,0,sizeof(d));
   for (i=1; i<=n; i++)
   for (j=1; j<=n; j++)
       in >> d[i][j];
       if (!d[i][j]) d[i][j]=INF;

   for (k=1; k<=n; k++)
     for (i=1; i<=n; i++)
        for (j=1; j<=n; j++) {
            if (d[i][k]==INF || d[k][j]==INF || i==j)
               continue;
            if (d[i][j]>d[i][k]+d[k][j])
            d[i][j]=d[i][k]+d[k][j];
        }

   for (i=1; i<=n; i++) {
     for (j=1; j<=n; j++) {
       if (d[i][j]==INF) d[i][j]=0;
       out << d[i][j] << ' ';
     }
     out << '\n';
   }
   return 0;
}