Cod sursa(job #1361773)

Utilizator japjappedulapPotra Vlad japjappedulap Data 25 februarie 2015 23:38:25
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
using namespace std;

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

int N;
int A[101][101], Ax[101][101];

int main()
{
    is >> N;
    for (int i = 1; i <= N; ++i)
        for (int j = 1; j <= N; ++j)
            is >> A[i][j], Ax[i][j] = A[i][j];

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



    for (int i = 1; i <= N; ++i)
        for (int j = 1; j <= N; ++j)
            for (int k = 1; k <= N; ++k)
                if (Ax[i][j] > Ax[i][k] + Ax[k][j] && i != j && i != k && j != k && Ax[i][k] && Ax[k][j])
                    Ax[i][j] = Ax[i][k] + Ax[k][j];

    for (int i = 1; i <= N; ++i, os << '\n')
        for (int j = 1; j <= N; ++j)
            os << A[i][j] << ' ';
    /*os << '\n';
    for (int i = 1; i <= N; ++i, os << '\n')
        for (int j = 1; j <= N; ++j)
            os << Ax[i][j] << ' ';*/

    is.close();
    os.close();
}