Cod sursa(job #3374551)

Utilizator Costin707Geamanu Constantin Costin707 Data 9 noiembrie 2026 02:08:38
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cmath>

using namespace std;

struct Muchie {
    int destinatie;
    int distanta;
};

const int MAXN = 30005;

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

void bfs(int start) {
    queue<int> q;

    q.push(start);
    vizitat[start] = true;
    pozitie[start] = 0;

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

        for (const auto& vec : graf[nod]) {
            if (!vizitat[vec.destinatie]) {
                vizitat[vec.destinatie] = true;
                pozitie[vec.destinatie] = pozitie[nod] + vec.distanta;
                q.push(vec.destinatie);
            }
        }
    }
}

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});
    }

    bfs(X);

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

    return 0;
}