Cod sursa(job #269608)

Utilizator al3x3Alex Chindea al3x3 Data 3 martie 2009 09:13:59
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
#define MAX 100
int main()
{
 int k, i, j, n;
 int a[MAX][MAX];
 FILE *fi=fopen("royfloyd.in", "r");
 fscanf(fi, "%d", &n);
 for(i=1; i<=n; ++i)
  for(j=1; j<=n; ++j)
   fscanf(fi, "%d", &a[i][j]);
 fclose(fi);
 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] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j)
     a[i][j]=a[i][k]+a[k][j];

 FILE *fo=fopen("royfloyd.out", "w");
 for(i=1; i<=n; i++)
  {
   for(j=1; j<=n; j++)
    fprintf(fo, "%d ", a[i][j]);
   fprintf(fo, "\n");
  }
 fclose(fo);
 return 0;
}