Cod sursa(job #2801465)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 16 noiembrie 2021 11:58:12
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <stdio.h>

using namespace std;

#define MAXN 100
#define INF 2001

int d[MAXN][MAXN];

int main()
{
    FILE *fin, *fout;
    int i, j, k, n;
    fin = fopen("royfloyd.in", "r");
    fscanf(fin, "%d", &n);
    for(i = 0; i < n; i++){
      for(j = 0; j < n; j++){
        fscanf(fin, "%d", &d[i][j]);
        if((d[i][j] == 0) && (i != j)){
          d[i][j] = INF;
        }
      }
    }
    fclose(fin);
    for(k = 0; k < n; k++){
      for(i = 0; i < n; i++){
        for(j = 0; j < n; j++){
          if(d[i][j] > (d[i][k] + d[k][j])){
            d[i][j] = d[i][k] + d[k][j];
          }
        }
      }
    }
    fout = fopen("royfloyd.out", "w");
    for(i = 0; i < n; i++){
      for(j = 0; j < n; j++){
        fprintf(fout, "%d ", d[i][j]);
      }
      fprintf(fout, "\n");
    }
    fclose(fout);
    return 0;
}