Cod sursa(job #2868317)

Utilizator IonutB56Ionut Birescu IonutB56 Data 10 martie 2022 21:01:32
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int a[257][257],b[257][257],n, m, c, i, j,x,y,k;
void citire()
{
    f >> n;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            f >> a[i][j];
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
            if (i != j)
                b[i][j] = 1;
    }
}
void afisare()
{
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
            g << a[i][j] << " ";
        g << endl;
    }
}
void rf()
{
    for (k = 1; k <= n; k++)
        for (i = 1; i <= n; i++)
            for (j = 1; j <= n; j++)
               if(i!=j) {
                   if (a[i][j] > a[i][k] + a[k][j])
                   {
                       a[i][j] = a[i][k] + a[k][j];
                       b[i][j] = b[i][k] + b[k][j];
                   }
                    else
                        if (a[i][j] == a[i][k] + a[k][j])
                            if(b[i][j]<b[i][k]+b[k][j])
                            b[i][j] = b[i][k] + b[k][j];
                }
}
int main()
{
    citire();
    rf();
    afisare();
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
            g<< b[i][j] << " ";
       g << endl;
    }
}