Cod sursa(job #3372144)

Utilizator IanisCijuCiju Ianis-Cristian IanisCiju Data 2 noiembrie 2026 16:56:14
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

struct Muchie {
    int nod;
    int distanta;
};

const int MAXN = 30005;
vector<Muchie> graf[MAXN];
int distante[MAXN];
bool vizitat[MAXN];

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

    int n, m, x, y;
    f >> n >> m >> x >> y;

    for (int i = 1; i <= m; ++i) {
        int u, v, d;
        f >> u >> v >> d;

        Muchie m1;
        m1.nod = v;
        m1.distanta = d;
        graf[u].push_back(m1);

        Muchie m2;
        m2.nod = u;
        m2.distanta = -d;
        graf[v].push_back(m2);
    }

    queue<int> coada;
    coada.push(x);
    vizitat[x] = true;
    distante[x] = 0;

    // BFS
    while (!coada.empty()) {
        int nod_curent = coada.front();
        coada.pop();

        if (nod_curent == y) {
            break;
        }

        for (Muchie vecin_curent : graf[nod_curent]) {
            int vecin = vecin_curent.nod;
            int cost = vecin_curent.distanta;

            if (vizitat[vecin] == false) {
                vizitat[vecin] = true;
                distante[vecin] = distante[nod_curent] + cost;
                coada.push(vecin);
            }
        }
    }

    int rezultat = distante[y];

    if (rezultat < 0) {
        rezultat = -rezultat;
    }

    g << rezultat << "\n";

    f.close();
    g.close();

    return 0;
}