Cod sursa(job #2831172)

Utilizator TDV24Tont Dragos-Valentin TDV24 Data 10 ianuarie 2022 21:46:45
Problema Distante Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("rf.in");
ofstream g("rf.out");

int costuri[257][257], drumuri[257][257];

void rf(int noduri)
{
    for(int k = 0; k < noduri; k++)
        for(int i = 0; i < noduri; i++)
            for(int j = 0; j < noduri; j++)
                if((costuri[i][j] > costuri[i][k] + costuri[k][j])
                     || ((costuri[i][j] == costuri[i][k] + costuri[k][j]) && (drumuri[i][j] < drumuri[i][k] + drumuri[k][j])))
                {
                    costuri[i][j] = costuri[i][k] + costuri[k][j];
                    drumuri[i][j] = drumuri[i][k] + drumuri[k][j];
                }
}

int main()
{
    int N;
    f >> N;
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
            {
                f >> costuri[i][j];
                if(i == j)
                    drumuri[i][j] = 0;
                else
                    drumuri[i][j] = 1;
            }
    rf(N);
    for(int i = 0; i < N; i++)
        {
            for(int j = 0; j < N; j++)
                g << costuri[i][j] << " ";
            g << "\n";
        }
    for(int i = 0; i < N; i++)
        {
            for(int j = 0; j < N; j++)
                g << drumuri[i][j] << " ";
            g << "\n";
        }
    return 0;
}