Cod sursa(job #1076557)

Utilizator TwistedFaithStanescu Jean Alexandru TwistedFaith Data 10 ianuarie 2014 13:03:13
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;
short int N, Matr[100][100];

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

void Citire()
{
    fin>>N;

    for (short int i=1; i<=N; ++i)
        for(short int j=1; j<=N; ++j)
            fin>>Matr[i][j];
}

void Construire()
{
    for(short int k=1; k<=N; k++)
        for(short int i=1; i<=N; i++)
            for(short int j=1; j<=N; j++)
                if(Matr[i][k] && Matr[k][j] && i!=j && ((Matr[i][j]>Matr[i][k]+Matr[k][j]) || (!Matr[i][j])))
                    Matr[i][j]=Matr[i][k]+Matr[k][j];
}

void Afisare()
{
    for (short int i=1; i<=N; ++i)
    {
        for(short int j=1; j<=N; ++j)
            fout<<Matr[i][j]<<' ';
        fout<<'\n';
    }
}

int main()
{
    Citire();
    Construire();
    Afisare();
}