#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 30005;
struct Muchie {
int nod;
int dist;
};
vector<Muchie> g[MAXN];
int viz[MAXN];
long long d[MAXN];
void dfs(int nod, long long dist_curenta) {
viz[nod] = 1;
d[nod] = dist_curenta;
for (const auto& vecin : g[nod]) {
if (!viz[vecin.nod]) {
dfs(vecin.nod, dist_curenta + vecin.dist);
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, m, x, y;
if (!(cin >> n >> m >> x >> y)) return 0;
for (int k = 0; k < m; ++k) {
int i, j, dist;
cin >> i >> j >> dist;
g[i].push_back({j, dist});
g[j].push_back({i, -dist});
}
dfs(x, 0);
cout << d[y] << "\n";
return 0;
}