Cod sursa(job #1330366)

Utilizator bullseYeIacob Sergiu bullseYe Data 30 ianuarie 2015 17:04:31
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#define INFINIT 99999999
#define DMAX 101
using namespace std;

int C[DMAX][DMAX], n;

void citire();
void rez();
void afisare();

int main()
{
    citire();
    rez();
    afisare();
    return 0;
}

void citire()
{
    int i, j;
    ifstream fin ("royfloyd.in");
    fin>>n;
    for (i=1; i<=n; ++i)//initializez prima data matricea
        for (j=i+1; j<=n; ++j)
            C[i][j]=C[j][i]=INFINIT;
    for (i=1; i<=n; ++i)
        for (j=1; j<=n; ++j)
            fin>>C[i][j];
    fin.close();
    return;
}

void rez()
{
    int i, j, k;
    for (k=1; k<=n; ++k)
        for (i=1; i<=n; ++i)
            for (j=1; j<=n; ++j)
                if (C[i][j]>C[i][k]+C[k][j] &&C[i][k] && C[k][j])
                    C[i][j]=C[i][k]+C[k][j];
    return;
}

void afisare()
{
    ofstream fout ("royfloyd.out");
    int i, j;
    for (i=1; i<=n; ++i)
    {
        for (j=1; j<=n; ++j)
            fout<<C[i][j]<<" ";
        fout<<"\n";
    }
    fout.close();
    return;
}