Cod sursa(job #3373589)

Utilizator luizaaaDutu Luiza-Alexandra luizaaa Data 7 noiembrie 2026 12:26:14
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

const int MAXN = 30005;
vector<pair<int, int>> adj[MAXN];
int dist[MAXN];
bool vizitat[MAXN];

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

    int n, m, startX, startY;
    fin >> n >> m >> startX >> startY;

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

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

    queue<int> q;

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

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

        if (nod_curent == startY) {
            break;
        }


        for (auto muchie : adj[nod_curent]) {
            int vecin = muchie.first;
            int cost = muchie.second;


            if (!vizitat[vecin]) {
                vizitat[vecin] = true;
                dist[vecin] = dist[nod_curent] + cost;
                q.push(vecin);
            }
        }
    }
    
    if (dist[startY] < 0) {
        fout << -dist[startY] << "\n";
    } else {
        fout << dist[startY] << "\n";
    }

    return 0;
}