Cod sursa(job #1700127)

Utilizator TincaMateiTinca Matei TincaMatei Data 9 mai 2016 17:15:38
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#define MAX_N 100
#define INFINIT 1000000000

int muchii[1+MAX_N][1+MAX_N];
int best[1+MAX_N][1+MAX_N];

int min(int a, int b) {
  if(b < a)
    a = b;
  return a;
}

int main() {
  int n, l, c, k;
  FILE *fin = fopen( "royfloyd.in" , "r" );
  fscanf(fin, "%d", &n);
  for(l = 1; l <= n; l++)
    for(c = 1; c <= n; c++) {
      fscanf(fin, "%d", &muchii[l][c]);
      if(muchii[l][c] == 0 && l != c)
        muchii[l][c] = INFINIT;
      best[l][c] = muchii[l][c];
    }
  fclose( fin );

  for(k = 1; k <= n; k++)
    for(l = 1; l <= n; l++)
      for(c = 1; c <= n; c++)
        best[l][c] = min(best[l][c], best[l][k] + best[k][c] );

  FILE *fout = fopen( "royfloyd.out" , "w" );
  for(l = 1; l <= n; l++){
    for(c = 1; c <= n; c++)
      fprintf(fout, "%d ", best[l][c]);
    fprintf(fout, "\n");
  }
  fclose( fout );
  return 0;
}