#include <iostream>
#include <fstream>
#include <vector>
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>>> adj(n + 1);
for (int i = 0; i < m; ++i) {
int u, v, d;
fin >> u >> v >> d;
adj[u].push_back({v, d});
adj[v].push_back({u, -d});
}
vector<int> dist(n + 1, -1);
vector<int> q;
q.push_back(x);
dist[x] = 0;
int head = 0;
while (head < q.size()) {
int u = q[head++];
for (auto edge : adj[u]) {
int v = edge.first;
int d = edge.second;
if (dist[v] == -1) {
dist[v] = dist[u] + d;
q.push_back(v);
}
}
}
fout << dist[y] << "\n";
return 0;
}