Cod sursa(job #1023521)

Utilizator Edward2012Eduard Ursinschi Edward2012 Data 7 noiembrie 2013 09:38:14
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>

using namespace std;
ifstream f("rf.in");
ofstream g("rf.out");
int A[101][101],i,j,n,k,B[101][101];

int main()
{f>>n;
for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
     {f>>A[i][j];B[i][j]=(A[i][j]!=0);}
for(k=1;k<=n;k++)
  for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
     if(i!=j&&A[i][k]*A[k][j])
       if(A[i][k]+A[k][j]<A[i][j]||A[i][j]==0)
       {A[i][j]=A[i][k]+A[k][j];
        B[i][j]=B[i][k]+B[k][j];}

       else if(A[i][j]==A[i][k]+A[k][j]&&B[i][j]<B[i][k]+B[k][j])
          B[i][j]=B[i][k]+B[k][j];

for(i=1;i<=n;i++)
   {for(j=1;j<=n;j++)
   g<<A[i][j]<<' ';
   g<<'\n';}
for(i=1;i<=n;i++)
   {for(j=1;j<=n;j++)
   g<<B[i][j]<<' ';
   g<<'\n';}
    return 0;
}