Cod sursa(job #786044)

Utilizator sory1806Sandu Sorina-Gabriela sory1806 Data 10 septembrie 2012 13:48:50
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb

#include <iostream>
#include <fstream>

#define _MAX_N 101

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

int d[_MAX_N][_MAX_N];
int n;

void read_data()
{
    f >> n;

    for (int i = 0; i < n; i ++) {
        for (int j = 0; j < n; j ++) {
            f >> d[i][j];
        }
    }
}

void royfloyd()
{

    for (int k = 0; k < n; k ++) {
        for (int i = 0; i < n; i ++) {
            for (int j = 0; j < n; j ++) {
                if (d[i][k] && d[k][j] && d[i][j] > d[i][k] + d[k][j]) {
                    d[i][j] = d[i][k] + d[k][j];
                }
            }
        }
    }
}

void print_solution()
{
    for (int i = 0; i < n; i ++) {
        for (int j = 0; j < n; j ++) {
            g << d[i][j] << ' ';
        }
        g << '\n';
    }
}

int main()
{
    read_data();
    royfloyd();
    print_solution();

    return 0;
}