Cod sursa(job #3374659)

Utilizator fanceapaMosul Tudor fanceapa Data 9 noiembrie 2026 08:51:14
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("sate.in");
ofstream fout("sate.out");

int main(){
    int N, M, X, Y;
    fin >> N >> M >> X >> Y;
    vector < vector < pair <int, int> > > muchii(N + 1);
    for (int i = 0; i < M; i++){
        int x, y, d;
        fin >> x >> y >> d;
        muchii[x].push_back({y, d});
        muchii[y].push_back({x, -d});
    }

    vector <int> distanta(N + 1, 0);
    vector <bool> vizitat(N + 1, false);
    queue <int> coada;
    coada.push(X);
    vizitat[X] = true;
    while (!coada.empty() && !vizitat[Y]){
        int nod = coada.front();
        coada.pop();
        for (auto muchie : muchii[nod]){
            int vecin = muchie.first;
            if (!vizitat[vecin]){
                vizitat[vecin] = true;
                distanta[vecin] = distanta[nod] + muchie.second;
                coada.push(vecin);
            }
        }
    }
    int rezultat = distanta[Y];
    if (rezultat < 0){
        rezultat = -rezultat;
    }
    fout << rezultat << "\n";
    return 0;
}