Cod sursa(job #3374276)

Utilizator GabrielPetrePetre Gabriel GabrielPetre Data 8 noiembrie 2026 21:44:17
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <queue>
#include <cmath>
#include <cstdio>

using namespace std;

const int MAXN = 30005;
vector<pair<int, int>> adj[MAXN]; 
bool visited[MAXN];
int pos[MAXN];

int main() {
    freopen("sate.in", "r", stdin);
    freopen("sate.out", "w", stdout);

    int n, m, x, y;
    if (scanf("%d %d %d %d", &n, &m, &x, &y) != 4) return 0;

    for (int k = 0; k < m; ++k) {
        int i, j, d;
        scanf("%d %d %d", &i, &j, &d);

        adj[i].push_back({ j, d });
        adj[j].push_back({ i, -d });
    }

    queue<int> q;
    q.push(x);
    visited[x] = true;
    pos[x] = 0; 

    while (!q.empty()) {
        int u = q.front();
        q.pop();

        if (u == y) {
            break;
        }

        for (auto edge : adj[u]) {
            int v = edge.first;
            int weight = edge.second;

            if (!visited[v]) {
                visited[v] = true;
                pos[v] = pos[u] + weight;
                q.push(v);
            }
        }
    }

    printf("%d\n", abs(pos[y]));

    return 0;
}