Cod sursa(job #1339095)

Utilizator Edsger.DijkstraEdsger Wybe Dijkstra Edsger.Dijkstra Data 10 februarie 2015 17:58:39
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAXN = 101;

short A[MAXN][MAXN];

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

    in >> N;
    for (i = 1; i <= N; i ++)
        for (j = 1; j <= N; j ++)
            in >> A[i][j];

    for (k = 1; k <= N; k ++)
        for (i = 1; i <= N; i ++)
            for (j = 1; j <= N; j ++)
                if (i != j && A[i][k] && A[k][j] && (A[i][k] + A[k][j] < A[i][j] || !A[i][j]) && i != k && j != k)
                    A[i][j] = A[i][k] + A[k][j];

    for (i = 1; i <= N; i ++, out << "\n")
        for (j = 1; j <= N; j ++)
            out << A[i][j] << " ";

    return 0;
}