Cod sursa(job #3373055)

Utilizator Vlad_prisVlad Prismareanu Vlad_pris Data 5 noiembrie 2026 23:15:50
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

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

vector<vector<pair<int, int>>> graph;
queue<pair<int, int>> q;
void read(int n, int m) {
    graph.resize(n + 1);
    for (int i = 0; i < m; i++) {
        int x, y, d;
        fin >> x >> y >> d;
        graph[x].push_back({y, d});
        graph[y].push_back({x, -d});
    }
}
void bfs(int start, vector<int>& dist) {
    q.push({start, 0});
    dist[start] = 0;
    while (!q.empty()) {
        auto [node, d] = q.front();
        q.pop();
        for (auto [neighbor, distance] : graph[node]) {
            if (dist[neighbor] == -1) {
                dist[neighbor] = d + distance;
                q.push({neighbor, dist[neighbor]});
            }
        }
    }
}
int main(){
    int n, m, x, y;
    fin >> n >> m >> x >> y;
    read(n, m);
    vector<int> dist(n + 1, -1);
    dist[x] = 0;
    bfs(x, dist);
    fout << dist[y] << "\n";
    return 0;
}