Cod sursa(job #144459)

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

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

long n,d[101][101];

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",&d[i][j]);
}

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 (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;
}