#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
#define NMax 30005
vector<pair<int, int>> g[NMax];
int dist[NMax];
bool viz[NMax];
void dfs(int nod) {
viz[nod] = true;
for (auto muchie : g[nod]) {
int vecin = muchie.first;
int cost = muchie.second;
if (viz[vecin] == false) {
dist[vecin] = dist[nod] + cost;
dfs(vecin);
}
}
}
int main() {
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, x, y;
fin >> n >> m >> x >> y;
for (int i = 0; i < m; i++) {
int u, v, d;
fin >> u >> v >> d;
g[u].push_back({v, d});
g[v].push_back({u, -d});
}
dist[x] = 0;
dfs(x);
int rez = dist[y];
if (rez < 0)
rez = -rez;
fout << rez;
return 0;
}