Cod sursa(job #1299013)

Utilizator jordasIordache Andrei Alexandru jordas Data 23 decembrie 2014 13:49:34
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <cmath>
#define mult 1000000

using namespace std;

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

 int n;
 int m[1001][1001],d[1001][1001];

int main()
{
    int i,j,k;

    x>>n;

    for(i=1;i<=n;i++)
       for(j=1;j<=n;j++)
       {
           x>>m[i][j];

           if(m[i][j]==0 && i!=j)
              m[i][j]=mult;
       }

    for(k=1;k<=n;k++)
    {
        for(i=1;i<=n;i++)
           d[i][k]=m[i][k];

        for(j=1;j<=n;j++)
           d[k][j]=m[k][j];

        for(i=1;i<=n;i++)
           for(j=1;j<=n;j++)
              if(i!=j)
                 d[i][j]=min(m[i][j],m[i][k]+m[k][j]);

        for(i=1;i<=n;i++)
           for(j=1;j<=n;j++)
              m[i][j]=d[i][j];
    }

    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
           y<<m[i][j]<<' ';
        y<<'\n';
    }

    return 0;
}