Cod sursa(job #2199236)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 26 aprilie 2018 22:45:57
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

using namespace std;

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

int N;
int mat[102][102];

void Read()
{
  fin>>N;

  for(int i=1; i<=N; ++i)
    for(int j=1; j<=N; ++j)
      { fin>>mat[i][j];
       // if(mat[i][j]==0) mat[i][j]=999999;
      }

  fin.close();
}

void Do()
{
   for(int k=1; k<=N; ++k)
    for(int i=1; i<=N; ++i)
      for(int j=1; j<=N; ++j)
        if(mat[i][k]!=0 && mat[k][j]!=0 && ( ( mat[i][j]==0 && i!=j) || ( mat[i][j] > mat[i][k] + mat[k][j] && i!=j)))
          mat[i][j]=mat[i][k]+mat[k][j];
}

void Print()
{
  for(int i=1; i<=N; ++i)
  {
    for(int j=1; j<=N; ++j)
      fout<<mat[i][j]<<' ';

    fout<<'\n';
  }

  fout.close();
}

int main()
{
    Read();
    Do();
    Print();

    return 0;
}