#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;
int main(){
int N,M,X,Y;
ifstream fin("sate.in");
ofstream fout("sate.out");
if(!fin.is_open()){
fout<<"NU SE POATE DESCHIDE FISIERUL!"<<"\n";
cout<<"NU SE POATE DESCHIDE FISIERUL!"<<"\n";
N=M=X=Y=0;
return 0;
}
fin>>N>>M>>X>>Y;
vector<vector<pair<int,int>>>g(N+1);
for(int k=0;k<M;k++){
int i,j,d;
fin>>i>>j>>d;
g[i].push_back({j,d});
g[j].push_back({i,-d});
}
vector<long long>poz(N+1,0);
vector<bool>viz(N+1,false);
queue<int> q;
q.push(X);
viz[X]=true;
while(!q.empty()){
int u=q.front();
q.pop();
for(auto[v,d]:g[u]){
if(!viz[v]){
viz[v]=true;
poz[v]=poz[u]+d;
q.push(v);
}
}
}
fout<<abs(poz[Y])<<"\n";
return 0;
}