#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, x, y;
vector<pair<int,int>> v[30001];
int d[30001];
bool viz[30001];
int coada[30001];
int main()
{
fin >> n >> m >> x >> y;
for (int k = 1; k <= m; k++)
{
int i, j, dist;
fin >> i >> j >> dist;
v[i].push_back({j, dist});
v[j].push_back({i, -dist});
}
int st = 1, dr = 1;
coada[1] = x;
viz[x] = true;
while (st <= dr)
{
int nod = coada[st];
st++;
for (auto p : v[nod])
{
int vecin = p.first;
if (!viz[vecin])
{
viz[vecin] = true;
d[vecin] = d[nod] + p.second;
dr++;
coada[dr] = vecin;
}
}
}
if (d[y] < 0)
d[y] = -d[y];
fout << d[y];
return 0;
}