Cod sursa(job #3372221)

Utilizator lucainfoOlteanu Luca lucainfo Data 2 noiembrie 2026 19:12:19
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <vector>
using namespace std;

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

struct Muchie {
    int vecin;
    int cost;
};

vector<vector<Muchie>> adj;
vector<int> dist;
vector<bool> viz;

void dfs(int nod) {
    viz[nod] = true;
    for (auto& m : adj[nod]) {
        if (!viz[m.vecin]) {
            dist[m.vecin] = dist[nod] + m.cost;// facem doar o parcurgere, pleaca din x si ajunge in y, deci in dist vom avea doar distanta ceruta
            dfs(m.vecin);
        }
    }
}

int main() {
    int N, M, X, Y;
    fin >> N >> M >> X >> Y;

    adj.resize(N + 5);
    dist.resize(N + 5, 0);
    viz.resize(N + 5, false);

    for (int i = 0; i < M; ++i) {
        int u, v, d;
        fin >> u >> v >> d;

        if (u > v) {
            swap(u, v);// in ordine crescatoare mergem in directia corecta, invers nu
        }

        adj[u].push_back({v, d});
        adj[v].push_back({u, -d});
    }

    dfs(X);

    fout << dist[Y] << "\n";
    return 0;
}