Cod sursa(job #289240)

Utilizator otilia_sOtilia Stretcu otilia_s Data 26 martie 2009 16:46:12
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#define NMAX 103
long a[NMAX][NMAX],n;
using namespace std;

void citire()
{
 FILE *fin=fopen("royfloyd.in","r");
 fscanf(fin,"%d",&n);
 int i,j;
 for (i=1;i<=n;i++)
  for (j=1;j<=n;j++)
   fscanf(fin,"%ld",&a[i][j]);
 fclose(fin);
}

void afisare()
{
 FILE *fout=fopen("royfloyd.out","w");
 int i,j;
 for (i=1;i<=n;i++)
  {
   a[i][i]=0;
   for (j=1;j<=n;j++)
    fprintf(fout,"%ld ",a[i][j]);
   fprintf(fout,"\n");
  }
 fclose(fout);
}
int main()
{
 citire();
 int i,j,k;
 for (k=1;k<=n;k++)
  for (i=1;i<=n;i++)
   for (j=1;j<=n;j++)
    if (a[i][k]&&a[k][j])
     if (!a[i][j]||a[i][j]>a[i][k]+a[k][j])
	a[i][j]=a[i][k]+a[k][j];
 afisare();
 return 0;
}