Cod sursa(job #3302441)

Utilizator ibanuIoana Banu ibanu Data 7 iulie 2025 16:02:34
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>

using namespace std;

int bfs(vector<vector<pair<int, int>>>& g, int s, int e) {
    vector<int> vis(g.size(), 0);
    queue<pair<int, int>> q;
    q.push({s, 0});
    vis[s] = 1;

    while(!q.empty()) {
        pair<int, int> n = q.front();
        q.pop();

        if (n.first == e) {
            return n.second;
        }

        for (pair<int, int> v : g[n.first]) {
            if (!vis[v.first]) {
                vis[v.first] = 1;
                q.push({v.first, n.second + v.second});
            }
        }
    }

    return -1;
}

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

    int n, m, x, y;

    in >> n >> m >> x >> y;

    vector<vector<pair<int, int>>> g(n+1);

    for (int i = 0; i < m; i++) {
        int a, b, d;
        in >> a >> b >> d; 
        g[a].push_back({b, d});
        g[b].push_back({a, -d});
    }

    cout << bfs(g, x, y);
    out << bfs(g, x, y);
    return 0;
}