Cod sursa(job #3373449)

Utilizator vik4torTunaru Victor-Cristian vik4tor Data 7 noiembrie 2026 02:39:46
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bitset>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

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

    vector<vector<pair<int, int>>> graf(N + 1);

    for (int i = 0; i < M; ++i) {
        int u, v, c;
        fin >> u >> v >> c;
        graf[u].emplace_back(v, c);
        graf[v].emplace_back(u, -c);
    }

    vector<int> dist(N + 1, 0);
    constexpr int NMAX = 30005;
    bitset<NMAX> vizitat;
    queue<int> q;

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

    while (!q.empty()) {
        int u = q.front();
        q.pop();
        if (u == Y) {
            fout << dist[Y] << "\n";
            break;
        }

        for (auto muchie : graf[u]) {
            int v = muchie.first;
            int cost = muchie.second;

            if (!vizitat[v]) {
                vizitat.set(v);
                dist[v] = dist[u] + cost;
                q.push(v);
            }
        }
    }

    fin.close();
    fout.close();
    return 0;
}