Cod sursa(job #3374990)

Utilizator PedroLuisNegoita Luis PedroLuis Data 9 noiembrie 2026 21:57:24
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cmath>

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, long long>>> graf(n + 1);
    vector<long long> dist(n + 1, 0);
    vector<bool> vizitat(n + 1, false);
    queue<int> q;

    for (int i = 0; i < m; i++) {
        int a, b;
        long long d;
        fin >> a >> b >> d;
        graf[a].push_back({b, d});
        graf[b].push_back({a, d});
    }

    q.push(x);
    vizitat[x] = true;
    dist[x] = 0;

    while (!q.empty()) {

        int nod = q.front();
        q.pop();

        if (nod == y) {
            break; }

        for (auto vecin : graf[nod]) {
            int urmator = vecin.first;
            long long cost = vecin.second;

            if (!vizitat[urmator]) {
                vizitat[urmator] = true;
                if (nod < urmator) {
                    dist[urmator] = dist[nod]+cost;
                } else {
                    dist[urmator] = dist[nod]-cost; 
                }
                q.push(urmator);
            }
        }
    }

    fout <<abs(dist[y])<< '\n';
    fin.close();
    fout.close();

    return 0;
}