Cod sursa(job #3372143)

Utilizator iLaurianLaurian Iacob iLaurian Data 2 noiembrie 2026 16:54:31
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <vector>

std::ifstream f ("sate.in");
std::ofstream g ("sate.out");

int dfs(int x, int y, const std::vector<std::vector<std::pair<int, int>>>& adj, std::vector<bool>& marked) {
    marked[x] = true;
    if (x == y) return 0;
    int mini = 20000001;
    for (auto nb : adj[x]) {
        if (!marked[nb.first]) {
            int d = nb.second + dfs(nb.first, y, adj, marked);
            if (mini > d) mini = d;
        }
    }
    return mini;
}

int main() {
    int n, m, X, Y;
    f >> n >> m >> X >> Y;
    std::vector<std::vector<std::pair<int, int>>> adj(n+1);
    for (int i = 1; i <= m; i++) {
        int x, y, d; f >> x >> y >> d;
        adj[x].emplace_back(std::make_pair(y, d));
        adj[y].emplace_back(std::make_pair(x, -d));
    }

    std::vector<bool> marked(n+1, false);
    g << dfs(X, Y, adj, marked);

    return 0;
}