Cod sursa(job #1495731)

Utilizator FlowstaticBejan Irina Flowstatic Data 3 octombrie 2015 15:53:49
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
#define NMAX 105
#define INF 2000
using namespace std;

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

int N;
int mat[NMAX][NMAX];
int mato[NMAX][NMAX];

void Citire();
void RoyFloyd();
void Afisare();

int main()
{

    Citire();
    RoyFloyd();
    Afisare();
    return 0;
}

void Citire()
{
    int i,j;
    fin>>N;
    for(i=1; i<=N; i++)
        for(j=1; j<=N; j++)
            {
                fin>>mat[i][j];
                if(mat[i][j] == 0)
                    mato[i][j] = INF;
                else
                    mato[i][j] = mat[i][j];
            }
}

void RoyFloyd()
{
    int z, x, y;
    for(z = 1; z <= N; z++)
        for(x = 1; x <= N; x++)
            for(y = 1; y <= N; y++)
                if(x != y && mato[x][y] > mato[x][z] + mato[z][y])
                {
                    mato[x][y] = mato[x][z] + mato[z][y];
                }
}

void Afisare()
{
    int i,j;
    for(i=1; i<=N; i++)
    {
        for(j=1; j<=N; j++)
            if(mato[i][j] == INF)
                fout<<"0 ";
            else
                fout<<mato[i][j]<<" ";
        fout<<'\n';
    }
}