Cod sursa(job #2339568)

Utilizator Anca.ioanaMuscalagiu Anca Ioana Anca.ioana Data 9 februarie 2019 09:48:47
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <limits.h>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");

int n,m,D[101][101];
void Citire()
{ f>>n;
int x, i , j,inf=INT_MAX ;
 for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    {f>>x;
        if(x!=0)
            D[i][j]=x;
        else if(i!=j)
             D[i][j]=inf;
             else D[i][j]=0;}
}
void Roy_Floyd()
{ int k, i , j;
    for(k=1;k<=n;k++)
        for(i=1;i<=n;i++)
          for(j=1;j<=n;j++)
            if(D[i][j]>D[i][k]+D[k][j]&&D[i][k]!=INT_MAX&&D[k][j]!=INT_MAX)
            D[i][j]=D[i][k]+D[k][j];
}
void Afisare()
{ int i, j;
    for(i=1;i<=n;i++)
    {for(j=1;j<=n;j++)
         if(D[i][j]!=INT_MAX)
         g<<D[i][j]<<" ";
         else g<<0<<" ";
         g<<'\n';}
}
int main()
{
Citire();
Roy_Floyd();
Afisare();
f.close();
g.close();
    return 0;
}