#include <fstream>
#include <vector>
#include <queue>
#include <utility>
#include <cstdlib>
using namespace std;
int main() {
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, x, y;
fin >> n >> m >> x >> y;
vector<vector<pair<int, int>>> graf(n + 1);
for (int k = 0; k < m; ++k) {
int i, j, d;
fin >> i >> j >> d;
graf[i].push_back({j, d});
graf[j].push_back({i, -d});
}
vector<int> poz(n + 1, 0);
vector<bool> vizitat(n + 1, false);
queue<int> q;
poz[x] = 0;
vizitat[x] = true;
q.push(x);
while (!q.empty()) {
int u = q.front();
q.pop();
for (const auto& muchie : graf[u]) {
int v = muchie.first;
int deplasare = muchie.second;
if (!vizitat[v]) {
poz[v] = poz[u] + deplasare;
vizitat[v] = true;
q.push(v);
}
}
}
fout << abs(poz[y]) << '\n';
return 0;
}