#include <bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, x, y, u, v, d;
vector <pair<int, int>> adj[30005];
int dist[30005];
bool vizitat[30005];
void BFS(int start)
{
queue <int> q;
q.push(start);
vizitat[start] = true;
dist[start] = 0;
while (!q.empty())
{
int nod = q.front();
q.pop();
if (nod == y)
break;
for (pair<int, int> muchie : adj[nod])
{
int vecin = muchie.first;
int cost = muchie.second;
if (!vizitat[vecin])
{
vizitat[vecin] = true;
dist[vecin] = dist[nod] + cost;
q.push(vecin);
}
}
}
}
int main()
{
fin >> n >> m >> x >> y;
for (int i=1; i<=m; i++)
{
fin >> u >> v >> d;
adj[u].push_back({v, d});
adj[v].push_back({u, -d});
}
BFS(x);
fout << abs(dist[y]) << "\n";
return 0;
}