Cod sursa(job #1076543)

Utilizator TwistedFaithStanescu Jean Alexandru TwistedFaith Data 10 ianuarie 2014 12:54:24
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

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

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

void Citire()
{
    fin>>N;

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

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

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

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