Cod sursa(job #3374979)

Utilizator Razvan0wVoicu Razvan Razvan0w Data 9 noiembrie 2026 21:40:04
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <fstream>
using namespace std;

int main()
{
    ifstream fisier_intrare("sate.in");
    ofstream fisier_iesire("sate.out");

    int nr_sate, nr_relatii, sat_start, sat_final;
    fisier_intrare >> nr_sate >> nr_relatii >> sat_start >> sat_final;

    static int relatii[100024][3];
    for (int i = 0; i < nr_relatii; i++)
        fisier_intrare >> relatii[i][0] >> relatii[i][1] >> relatii[i][2];

    static int pozitie[30001];
    static bool cunoscut[30001];

    cunoscut[sat_start] = true;

    bool am_aflat_ceva_nou = true;
    while (am_aflat_ceva_nou) {
        am_aflat_ceva_nou = false;

        for (int i = 0; i < nr_relatii; i++) {
            int sat_stanga = relatii[i][0];
            int sat_dreapta = relatii[i][1];
            int distanta = relatii[i][2];

            if (cunoscut[sat_stanga] && !cunoscut[sat_dreapta]) {
                pozitie[sat_dreapta] = pozitie[sat_stanga] + distanta;
                cunoscut[sat_dreapta] = true;
                am_aflat_ceva_nou = true;
            }
            else if (cunoscut[sat_dreapta] && !cunoscut[sat_stanga]) {
                pozitie[sat_stanga] = pozitie[sat_dreapta] - distanta;
                cunoscut[sat_stanga] = true;
                am_aflat_ceva_nou = true;
            }
        }
    }

    int rezultat = pozitie[sat_final];
    if (rezultat < 0)
        rezultat = -rezultat;

    fisier_iesire << rezultat << "\n";
}