Cod sursa(job #3260238)

Utilizator PreparationTurturica Eric Preparation Data 1 decembrie 2024 11:24:34
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <limits.h>
#define lol long long
#define MAX_N 105
using namespace std;

lol matrix[MAX_N][MAX_N];
lol dp[MAX_N][MAX_N];
int main()
{
    FILE *fin = fopen("royfloyd.in", "r");
    FILE *fout = fopen("royfloyd.out", "w");
    int n;
    fscanf(fin, "%d", &n);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            fscanf(fin, "%lld", &matrix[i][j]);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (i != j)
                dp[i][j] = (matrix[i][j] == 0) ? LLONG_MAX : matrix[i][j];
            else
                dp[i][j] = 0;
    for (int k = 0; k < n; k++)
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                if (dp[i][k] != LLONG_MAX && dp[k][j] != LLONG_MAX)
                    dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            fprintf(fout, "%lld ", (dp[i][j] == LLONG_MAX) ? 0 : dp[i][j]);
        fprintf(fout, "\r\n");
    }
}