Cod sursa(job #144464)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 27 februarie 2008 18:08:35
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
# include <stdio.h>

FILE*f=fopen("royfloyd.in","r");
FILE*g=fopen("royfloyd.out","w");

long n,d[101][101],b;

void writedata();
void readdata();
void init();
void roy_floyd();

void readdata()
{ 
 long i,j;
 fscanf(f,"%ld",&n);
 for (i=1; i<=n; i++)
   for (j=1; j<=n; j++)
     {
      fscanf(f,"%ld",&b);
      if (i==j) d[i][j]=0;
       else
         if (b==0&&i!=j) d[i][j]=600000;
           else d[i][j]=b; 
     }
}

void roy_floyd()
{
 long i,j,k;
 for (k=1; k<=n; k++)
  for (i=1; i<=n; i++)
   for (j=1; j<=n; j++)
     if (i!=j)
      if (d[i][j]>d[i][k]+d[k][j])
       {
        d[i][j]=d[i][k]+d[k][j];
       }
}

void writedata()
{
 long i,j;
 for (i=1; i<=n; i++)
   {
    for (j=1; j<=n; j++)
      fprintf(g,"%ld ",d[i][j]);
    fprintf(g,"\n");
   }
}

int main()
{
 readdata();
 roy_floyd();
 writedata();
 return 0;
}