Cod sursa(job #1923038)

Utilizator Mstar_AngelComan Mara Stefania Mstar_Angel Data 10 martie 2017 20:23:16
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
#define N 101
int a[N][N];
int n;
void roy_floyd (){
  int k,i,j;
  for (k=1;k<=n;k++)
    for (i=1;i<=n;i++)
      for (j=1;j<=n;j++)
        if (i != j)
          if (a[i][k] != 0 && a[k][j] != 0)
            if (a[i][j] > a[i][k] + a[k][j] || a[i][j] == 0)
              a[i][j] = a[i][k] + a[k][j];
}

int main (){
  FILE *in, *out;
  in = fopen ("royfloyd.in","r");
  out = fopen ("royfloyd.out","w");
  int i,j;
  fscanf(in,"%d",&n);
  for (i=1;i<=n;i++)
    for (j=1;j<=n;j++)
      fscanf(in,"%d",&a[i][j]);
  roy_floyd ();

  for (i=1;i<=n;i++){
    for (j=1;j<=n;j++)
      fprintf (out,"%d ",a[i][j]);
    fprintf (out,"\n");
  }


  fclose (in);
  fclose (out);
  return 0;
}