#include <fstream>
#include <vector>
#include <algorithm>
#define MAX 30001
using namespace std;
vector <pair<int, int> > la[MAX];
int n,m,x,y,v[MAX];
ifstream f("sate.in");
ofstream g("sate.out");
void dfs(int nod)
{
int i;
for(i=0;i<la[nod].size();i++)
if(v[la[nod][i].first]==0)
{
int fiu=la[nod][i].first;
int w=la[nod][i].second;
v[fiu]=v[nod]+w;
dfs(fiu);
}
}
int main()
{
f>>n>>m>>x>>y;
int i,u,fiu,w;
for(i=1;i<=m;i++)
{
f>>u>>fiu>>w;
la[u].push_back(make_pair(fiu,w));
la[fiu].push_back(make_pair(u,-w));
}
dfs(x);
if(v[y]<0)
g<<-v[y];
else
g<<v[y];
}