Cod sursa(job #1616087)

Utilizator Lucian_BosinceanuLucian-Andrei Bosinceanu Lucian_Bosinceanu Data 27 februarie 2016 09:43:28
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define DMAX 101
#define INF 2000000000

using namespace std;

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

int n;
long long int M[DMAX][DMAX];

void citire();
void rezolvare();
void afisare();

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

void citire()
{
int i,j;
fin>>n;
for (i=1;i<=n;i++)
     for (j=1;j<=n;j++)
          {fin>>M[i][j];
           if (M[i][j]==0 && i!=j) M[i][j]=INF;
          }

}

void rezolvare()
{
int i,j,k;
for (k=1;k<=n;k++)
     for (i=1;i<=n;i++)
          for (j=1;j<=n;j++)
               if (M[i][j]>M[i][k]+M[k][j])
                   M[i][j]=M[i][k]+M[k][j];
}

void afisare()
{
int i,j;
for (i=1;i<=n;i++)
    {for (j=1;j<=n;j++)
         {
         if (M[i][j]==INF) M[i][j]=0;
         fout<<M[i][j]<<' ';
         }
    fout<<'\n';
    }
}