Cod sursa(job #2198015)

Utilizator SqueekDanielTodasca Daniel SqueekDaniel Data 23 aprilie 2018 12:51:45
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#define dimn 105

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

int N;
int cost[dimn][dimn];

void royfloyd() {
    for (int i, j, k=1; k<=N; k++)
        for (i=1; i<=N; i++)
            for (j=1; j<=N; j++)
                if (cost[i][k] && cost[k][j] && (cost[i][j] > cost[i][k] + cost[k][j] || !cost[i][j]) && i!=j)
                    cost[i][j] = cost[i][k] + cost[k][j];
}

void citire() {
    f >> N;
    for (int i=1, j; i<=N; i++)
        for (j=1; j<=N; j++)
            f >> cost[i][j];
}
void rezolvare() {
    royfloyd();
    for (int i=1, j; i<=N; i++) {
        for (j=1; j<=N; j++)
            g << cost[i][j] << " " ;
        g << "\n";
    }
}

int main()
{
    citire();
    rezolvare();

    return 0;
}