Cod sursa(job #1908650)

Utilizator justsomedudePalade Thomas-Emanuel justsomedude Data 7 martie 2017 09:51:20
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int M[101][101];
short n;
void adaugareElemente()
{
    fin >> n;
    for(short i = 1; i <= n; i++)
        for(short j = 1; j <= n; fin >> M[i][j++]);
}


void RoyFloyd()
{
    for(short k = 1; k <= n; k++)
        for(short i = 1; i <= n; i++)
            for(short j = 1; j <= n; j++)
                if(!M[i][k] != 0 && M[k][j] != 0 &&(M[i][j] > M[i][k] + M[k][j] || !M[i][j] && i != j))
                    M[i][j] = M[i][k] + M[k][j];
}

void Afisare()
{
    for(short i = 1; i <= n; fout << '\n', i++)
        for(short j = 1; j <= n; fout << M[i][j++] << " ");
}

int main()
{
    adaugareElemente();
    RoyFloyd();
    Afisare();
    return 0;
}