Cod sursa(job #2294029)

Utilizator asm10Adina S asm10 Data 1 decembrie 2018 20:26:37
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

#define INF ((1 << 30) - 1)

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

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

    in >> nNodes;

    int costs[nNodes][nNodes];

    for (i = 0; i < nNodes; ++i) {
        for (j = 0; j < nNodes; ++j) {
            in >> costs[i][j];

            if ((!costs[i][j]) && (i != j)) {
                costs[i][j] = INF;
            }
        }
    }

    for (k = 0; k < nNodes; ++k) {
        for (i = 0; i < nNodes; ++i) {
            for (j = 0; j < nNodes; j++) {
                if((costs[i][j] > costs[i][k] + costs[k][j])) {
                    costs[i][j] = costs[i][k] + costs[k][j];
                }
            }
        }
    }

    for (i = 0; i < nNodes; ++i) {
        for (j = 0; j < nNodes; ++j) {
            if (costs[i][j] == INF) {
                costs[i][j] = 0;
            }

            out << costs[i][j] << " ";
        }

        out << "\n";
    }

    return 0;
}