Cod sursa(job #1253810)

Utilizator andreiagAndrei Galusca andreiag Data 1 noiembrie 2014 20:24:46
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <iostream>

using namespace std;
const int Nmax = 130;
const int INF = 0x3f3f3f3f;

int d[Nmax][Nmax];

int main() {
    ifstream f ("royfloyd.in");
    ofstream g ("royfloyd.out");
    
    int N;
    f >> N;
    for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++)
    {
        f >> d[i][j];
        if (d[i][j] == 0 && (i != j))
            d[i][j] = INF;
    }
    
    for (int k = 0; k < N; k++)
    for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++)
    {
        if (d[i][j] > d[i][k] + d[k][j])
            d[i][j] = d[i][k] + d[k][j];
    }
    
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (d[i][j] == INF)
                d[i][j] = 0;
            g << d[i][j] << ' ';
        }
        g << '\n';
    }

    return 0;
}