#include <bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n,m,x,y;
int u[100100],v[100100],d[100100];
vector <int> g[100100];
queue <int> q;
bool viz[100100];
int dist[100100];
int main()
{
fin>>n>>m>>x>>y;
for(int i=1; i<=m; i++)
{
fin>>u[i]>>v[i]>>d[i];
g[u[i]].push_back(i);
g[v[i]].push_back(i);
}
q.push(x);
viz[x]=1;
while(!q.empty())
{
int n1=q.front();
q.pop();
for(int e:g[n1])
{
int n2=u[e]+v[e]-n1;
if(viz[n2]==0)
{
q.push(n2);
viz[n2]=1;
if(n2>n1)
dist[n2]=dist[n1]+d[e];
else
dist[n2]=dist[n1]-d[e];
}
}
}
fout<<dist[y]<<"\n";
return 0;
}