Cod sursa(job #3371963)

Utilizator david18.6yDavid Popa david18.6y Data 1 noiembrie 2026 21:56:51
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstdlib>
using namespace std;

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

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

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

    // sate(lista, X, Y)
    vector<int> dist_X(N + 1, -1);
    dist_X[X] = 0;
    queue<int> coada;
    coada.push(X);
    vector<bool> vizitat(N + 1, false);
    vizitat[X] = true;
    while (!coada.empty()) {
        int nod = coada.front();
        coada.pop();
        for (auto [vecin, d] : lista[nod]) {
            if (!vizitat[vecin]) {
                vizitat[vecin] = true;
                dist_X[vecin] = dist_X[nod] + d;
                coada.push(vecin);
            }
        }
    }

    fout << abs(dist_X[Y]) << "\n";
    return 0;
}