Cod sursa(job #2917288)

Utilizator Alex_HossuHossu Alexandru Alex_Hossu Data 4 august 2022 11:47:05
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>

#define MAX_N 105

int p[MAX_N][MAX_N];

int main() {
  FILE *fin, *fout;
  int n;
  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", &p[i][j]);

  fclose(fin);

  for (k = 0; k < n; k++)
    for (i = 0; i < n; i++)
      for (j = 0; j < n; j++)
        if (p[i][k] && p[k][j] && (p[i][k] + p[k][j] < p[i][j] || !p[i][j]) && i != j)
          p[i][j] = p[i][k] + p[k][j];

  fout = fopen("royfloyd.out", "w");
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++)
      fprintf(fout, "%d ", p[i][j]);
    fputc('\n', fout);
  }
  fclose(fout);

  return 0;
}