Cod sursa(job #3029911)

Utilizator Edyci123Bicu Codrut Eduard Edyci123 Data 17 martie 2023 11:21:42
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

#define DIM 105
#define INF 0x3f3f3f3f

using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");

int n, dp[DIM][DIM];

int main() {
    f >> n;

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            f >> dp[i][j];
            if (dp[i][j] == 0) {
                dp[i][j] = INF;
            }
        }
    }

    for (int p = 1; p <= n; p++) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if (i != j && i != p && j != p && dp[i][j] > dp[i][p] + dp[p][j]) {
                    dp[i][j] = dp[i][p] + dp[p][j];
                }
            }
        }
    }

    for (int i = 1; i <= n; i++, g << "\n") {
        for (int j = 1; j <= n; j++, g << " ") {
            if (dp[i][j] == INF) {
                g << 0;
            } else {
                g << dp[i][j];
            }
        }
    }


    return 0;
}