Cod sursa(job #2947991)

Utilizator mihaipriboimihailucapriboi mihaipriboi Data 27 noiembrie 2022 00:34:48
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
// Mihai Priboi

#include <stdio.h>

#define MAXN 100
#define INF 1'000'000'000

int n;
int mat[MAXN][MAXN];

int main() {
  FILE *fin, *fout;
  int i, j, k;

  fin = fopen("royfloyd.in", "r");

  fscanf(fin, "%d", &n);
  for(i = 0; i < n; i++) {
    for(j = 0; j < n; j++) {
      fscanf(fin, "%d", &mat[i][j]);
      if(mat[i][j] == 0) 
        mat[i][j] = INF;
    }
  }

  fclose(fin);

  for(k = 0; k < n; k++)
    for(i = 0; i < n; i++)
      for(j = 0; j < n; j++)
        if(mat[i][j] > mat[i][k] + mat[k][j])
          mat[i][j] = mat[i][k] + mat[k][j];

  fout = fopen("royfloyd.out", "w");

  for(i = 0; i < n; i++) {
    for(j = 0; j < n; j++) {
      if(mat[i][j] == INF || i == j)
        fprintf(fout, "0 ");
      else
        fprintf(fout, "%d ", mat[i][j]);
    }
    fprintf(fout, "\n");
  }

  fclose(fout);
  return 0;
}