Cod sursa(job #3374431)

Utilizator cristian___Nastase Cristian-Florin cristian___ Data 9 noiembrie 2026 00:30:19
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <vector>
#include <fstream>

using namespace std;

bool dfs(int nod, int y, vector<vector<pair<int, int>>>& lista, vector<int>& visited, int& suma) {
    if (nod == y) {
        return true;
    }

    visited[nod] = 1;

    for (auto vecin : lista[nod]) {
        int nodVecin = vecin.first;
        int dist = vecin.second;

        if (!visited[nodVecin]) {
            suma += dist;

            if (dfs(nodVecin, y, lista, visited, suma)) {
                return true;
            }

            suma -= dist;
        }
    }

    return false;
}

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

    int n, m, x, y, i, j, d, suma;
    in >> n >> m >> x >> y;

    vector<vector<pair<int, int>>> lista(n + 1);
    vector<int> visited(n + 1, 0);

    while (in >> i >> j >> d){
        lista[i].push_back({j, d});
        lista[j].push_back({i, -d});
    }

    in.close();

    suma = 0;
    dfs(x, y, lista, visited, suma);

    out << suma;
    out.close();

    return 0;
}