#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <cstdlib>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector< pair<int, int> > a[30001];
int d[30001], viz[30001];
int n, m, x, y;
int main()
{
int i, j, c, k;
f >> n >> m >> x >> y;
for (k = 1; k <= m; k++)
{
f >> i >> j >> c;
if (i > j)
swap(i, j);
a[i].push_back(make_pair(j, c));
a[j].push_back(make_pair(i, -c));
}
queue<int> q;
q.push(x);
viz[x] = 1;
while (!q.empty())
{
int nod = q.front();
q.pop();
for (k = 0; k < a[nod].size(); k++)
{
int vec = a[nod][k].first;
int cost = a[nod][k].second;
if (viz[vec] == 0)
{
viz[vec] = 1;
d[vec] = d[nod] + cost;
q.push(vec);
}
}
}
g << abs(d[y]) << "\n";
return 0;
}