#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector<pair<int,int>> sate[30001];
int poz[30001]; // poz[a]=b inseamna ca satul 'a' e la b km de X
bool vizitat[30001]; //vizitat sau nu
void dfs(int s)
{
for (int k = 0; k < sate[s].size(); k++)
{
int vecin = sate[s][k].first; //sate[s][k] = satul s, perechea k
int km = sate[s][k].second;
if (vizitat[vecin])
continue;
else{
poz[vecin]=poz[s]+km;
vizitat[vecin]=1;
dfs(vecin);
}
}
}
int main(){
int n,m,x,y; //n sate, m relatii, x si y distanta cautata
f>>n>>m>>x>>y;
for (int it=1;it<=m;it++)
{
int i,j,d;
f>>i>>j>>d; // distanta dintre i si j are 'd' km
sate[i].push_back({j, d});
sate[j].push_back({i, -d});
}
poz[x]=0; //totul e relativ la x
vizitat[x]=1;
dfs(x);
g<<poz[y];
f.close();
g.close();
}