#include <bits/stdc++.h>
using namespace std;
ifstream fin ("sate.in");
ofstream fout ("sate.out");
struct Muchie
{
int x, y, cost;
};
int n, m, a,b;
int dist[30005];
int viz[400005];
vector <Muchie> lista[30005];
void DFS (int nod)
{
viz[nod] = 1;
for(Muchie i: lista[nod])
{
if (viz[i.y]==0)
{
if (nod < i.y)
dist[i.y] = dist[nod] + i.cost;
else
dist[i.y] = dist[nod] - i.cost;
DFS(i.y);
}
}
}
int main()
{
fin>>n>>m>>a>>b;
for (int i = 1; i <= m; i++)
{
int x, y, cost;
fin >> x >> y >> cost;
lista[x].push_back({x, y, cost});
lista[y].push_back({y, x, cost});
}
int cost = 0;
DFS(a);
fout<<abs(dist[b]);
return 0;
}