Cod sursa(job #2110611)

Utilizator sebistetuCucolas Sebastian sebistetu Data 20 ianuarie 2018 22:30:34
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
const int Nmax = 105;
int a[Nmax][Nmax], n;
void citire(){
    f >> n;
    int i, j;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= n; j++)
            f >> a[i][j];
}
void afisare(){
    int i, j;
    for(i = 1; i <= n; i++){
        for(j = 1; j <= n; j++)
            g << a[i][j] << ' ';
        g << '\n';
    }
}
void roy_floyd(){
    int i, j, k;
    for(j = 1; j <= n; j++)
        for(i = 1; i <= n; i++)
            for(k = 1; k <= n; k++)
                    if(a[i][j] and a[j][k] and (a[i][j] + a[j][k] < a[i][k] or !a[i][k]) and i != k)
                        a[i][k] = a[i][j] + a[j][k];
}
int main(){
    citire();
    roy_floyd();
    afisare();
    return 0;
}