Cod sursa(job #2298383)

Utilizator RazvanPanaiteRazvan Panaite RazvanPanaite Data 8 decembrie 2018 09:32:44
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
#define InFile "royfloyd.in"
#define OutFile "royfloyd.out"
#define DMAX 110

using namespace std;

FILE *fin=fopen(InFile,"r");
FILE *fout=fopen(OutFile,"w");

int C[DMAX][DMAX];
int n;

void citire();
void pd();
void afisare();

int main()
{citire();
 pd();
 afisare();
 return 0;
}
void citire()
{int i,j;
 fscanf(fin,"%d",&n);
 for(i=1;i<=n;i++)
     for(j=1;j<=n;j++)
         {fscanf(fin,"%d",&C[i][j]);
          if(i!=j && C[i][j]==0)
             C[i][j]=INT_MAX/2;
         }
}
void pd()
{int i,j,k;
 /*
 for(i=1;i<=n;i++)
     for(j=1;j<=n;j++)
         if(C[i][j]!=INT_MAX/2)
            tata[i][j]=i;
 */
 for(i=1;i<=n;i++)
     for(j=1;j<=n;j++)
         for(k=1;k<=n;k++)
             if(C[j][k]>C[j][i]+C[i][k])
                {C[j][k]=C[j][i]+C[i][k];
                 //tata[j][k]=tata[i][k];
                }
}
void afisare()
{int i,j;
 for(i=1;i<=n;i++)
     {for(j=1;j<=n;j++)
          fprintf(fout,"%d ",C[i][j]);
      fprintf(fout,"\n");
     }
}