Cod sursa(job #3374354)

Utilizator CondoracheTudorCondorache Tudor CondoracheTudor Data 8 noiembrie 2026 23:16:35
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cmath>

using namespace std;

const int MAXN = 30005;

vector<pair<int, int>> graf[MAXN];
int dist[MAXN];
bool vizitat[MAXN];

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

    int n, m, start, destinatie;
    fin >> n >> m >> start >> destinatie;

    for (int i = 0; i < m; ++i) {
        int u, v, d;
        fin >> u >> v >> d;
        
        graf[u].push_back({v, d});
        graf[v].push_back({u, -d});
    }

    queue<int> q;
    
    q.push(start);
    vizitat[start] = true;
    dist[start] = 0;

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

        if (nod_curent == destinatie) {
            fout << abs(dist[destinatie]) << "\n";
            break;
        }

        for (auto muchie : graf[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);
            }
        }
    }

    return 0;
}