#include <bits/stdc++.h>
#define INF 2e9
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y;
vector <pair<int,int>> adj[30005];
int dist[30005];
bool vizitat[30005];
int bfs(int start,int destinatie){
queue<int> q;
q.push(start);
vizitat[start]=true;
dist[start]=0;
while(!q.empty())
{
int nod=q.front();
q.pop();
if(nod==destinatie){
break;
}
for(auto muchie:adj[nod]) {
int vecin = muchie.first;
int cost=muchie.second;
if(!vizitat[vecin]){
vizitat[vecin] = true;
dist[vecin]=dist[nod]+cost;
q.push(vecin);
}
}
}
return abs(dist[destinatie]);
}
int main(){
f>>n>>m>>x>>y;
for (int i=1;i<=n;i++)
dist[i]=INF;
for (int i=1;i<=m;i++) {
int st,dr,d;
f>>st>>dr>>d;
adj[st].push_back({dr,d});
adj[dr].push_back({st,-d});
}
g<<bfs(x,y)<<"\n";
return 0;
}