#include <bits/stdc++.h>
using namespace std;
int noduri, muchii, x,y;
vector<pair<int,int>>vecini[30005];
int distx[30005];
queue<int>q;
void bfs(int start)
{
distx[start]=0;
q.push(start);
while(!q.empty())
{
int nod=q.front();
q.pop();
for(auto i: vecini[nod])
if(distx[i.first]==30005)
{
if(i.first>nod)
distx[i.first]=distx[nod]+i.second;
else
distx[i.first]=distx[nod]-i.second;
q.push({i.first});
}
}
}
int main()
{
ifstream cin("sate.in");
ofstream cout("sate.out");
for(int i=1; i<=30000; i++)
distx[i]=30005;
cin>>noduri>>muchii>>x>>y;
int a,b,d;
for(int i=1; i<=muchii; i++)
{
cin>>a>>b>>d;
vecini[a].push_back({b,d});
vecini[b].push_back({a,d});
}
bfs(x);
cout<<distx[y];
return 0;
}