Cod sursa(job #2900761)

Utilizator moltComan Calin molt Data 12 mai 2022 09:13:14
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>

using namespace std;

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

#define NMAX 105

int n;
long long dist[NMAX][NMAX];

void roy_floyd() {
    for (int k = 1; k <= n; ++k) {
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= n; ++j) {
                if (i == j || k == i || k == j) continue;
                if (dist[i][k] + dist[k][j] < dist[i][j]) {
                    dist[i][j] = dist[i][k] + dist[k][j];
                }
            }
        }
    }
}

int main()
{
    in >> n;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            in >> dist[i][j];
            if (dist[i][j] == 0) {
                dist[i][j] = INT_MAX;
            }
        }
    }

    roy_floyd();

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            if (dist[i][j] == INT_MAX) dist[i][j] = 0;
        }
    }

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            out << dist[i][j] << " ";
        }
        out << "\n";
    }

    return 0;
}