Cod sursa(job #3373036)

Utilizator IonLucIonescu Luca Darius IonLuc Data 5 noiembrie 2026 22:04:45
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cmath>

using namespace std;

struct Muchie {
    int destinatie;
    int distanta;
};

const int MAXN = 30001;

vector<Muchie> graf[MAXN];
int pos[MAXN];
bool vizitat[MAXN];

int main() {
    ifstream fin("sate.in");
    ofstream fout("sate.out");

    int N, M, X, Y;
    fin >> N >> M >> X >> Y;

    for (int k = 0; k < M; ++k) {
        int i, j, D;
        fin >> i >> j >> D;
        graf[i].push_back({j, D});
        graf[j].push_back({i, -D});
    }

    queue<int> Q;
    Q.push(X);
    vizitat[X] = true;
    pos[X] = 0;

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

        if (nod == Y) {
            break;
        }

        for (const auto& vecin : graf[nod]) {
            int urm = vecin.destinatie;
            int cost = vecin.distanta;

            if (!vizitat[urm]) {
                vizitat[urm] = true;
                pos[urm] = pos[nod] + cost;
                Q.push(urm);
            }
        }
    }

    fout << abs(pos[Y] - pos[X]) << "\n";

    fin.close();
    fout.close();
    return 0;
}