#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
void parcurgere(vector<vector<pair<int,int>>> &graph,
vector<int> &poz, int sat, int pozsat)
{
poz[sat]=pozsat;
for(int nrdrum=0;nrdrum<graf[sat].size();nrdrum++)
if(poz[graph[sat][nrdrum].first]==-1);
parcurgere(graph,poz,graph[sat][nrdrum].first,
graph[sat][nrdrum].second+pozsat)
}
int main ()
{
int n, m, x, y;
fin>>n>>m>>x>>y;
vector<vector<pair<int,int>>> graph(n+1);
vector<long long> poz(n+1,-1);
int nod1,nod2,dist;
while(m)
{
fin>>nod1>>nod2>>dist;
graph[nod1].push_back({nod2,dist});
graph[nod2].push_back({nod1,-dist});
m--;
}
parcurgere(graph,poz,1,0);
fout<<-poz[x]+poz[y];
fin.close();
fout.close();
return 0;
}