Cod sursa(job #3374655)

Utilizator irina_maneaIrina Manea irina_manea Data 9 noiembrie 2026 08:39:07
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
//
// Created by Irina Manea on 09.11.2026.
//#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstdlib>

using namespace std;

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

int n, m, x, y;
vector<vector<pair<int, int>>> lista;
vector<bool> viz;
vector<int> d;

void citire() {
    f >> n >> m >> x >> y;

    lista.resize(n + 1);
    for (int i = 0; i < m; i++) {
        int u, v, dist;
        f >> u >> v >> dist;
        lista[u].push_back({v, dist});
        lista[v].push_back({u, -dist});
    }
}

void bfs(int start) {
    viz.assign(n + 1, false);
    d.assign(n + 1, 0);
    queue<int> coada;

    coada.push(start);
    viz[start] = true;
    d[start] = 0;

    while (!coada.empty()) {
        int nod = coada.front();
        coada.pop();

        if (nod == y) {
            break;
        }

        for (int i = 0; i < lista[nod].size(); i++) {
            int vecin = lista[nod][i].first;
            int cost = lista[nod][i].second;

            if (!viz[vecin]) {
                viz[vecin] = true;
                d[vecin] = d[nod] + cost;
                coada.push(vecin);
            }
        }
    }
}

int main() {
    citire();
    bfs(x);
    g << abs(d[y] - d[x]) << "\n"; // abs  ca sa fie mereu poz

    return 0;
}