Cod sursa(job #2817185)

Utilizator schizofrenieShallan Davar schizofrenie Data 13 decembrie 2021 09:37:35
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>

#define MAXN 100
#define INF (0x7fffffff >> 1)
#define MIN(a, b) ((a) < (b) ? (a) : (b))

int drum[MAXN][MAXN];

int main () {
   int n;
   int i, j, k;

   freopen("royfloyd.in", "r", stdin);
   freopen("royfloyd.out", "w", stdout);

   scanf("%d", &n);

   for (i = 0; i != n; ++ i)
      for (j = 0; j != n; ++ j) {
         scanf("%d", &drum[i][j]);
         if (drum[i][j] == 0)
            drum[i][j] = INF;
      }

   for (k = 0; k != n; ++ k)
      for (i = 0; i != n; ++ i)
         for (j = 0; j != n; ++ j)
            drum[i][j] = MIN(
                  drum[i][j],
                  drum[i][k] + 
                  drum[k][j]);

   for (i = 0; i != n; ++ i, putchar('\n'))
      for (j = 0; j != n; ++ j) {
         if (i == j || drum[i][j] == INF)
            drum[i][j] = 0;
         printf("%d ", drum[i][j]);
      }
   return 0;
}