#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream fin("sate.in");
ofstream fout("sate.out");
int n,m,x,y;
fin>>n>>m>>x>>y;
vector<vector<pair<int,int>>> graf(n+1);
for (int i=0; i<m; i++) {
int a,b,d;
fin>>a>>b>>d;
graf[a].push_back({b,d});
graf[b].push_back({a,-d});
}
vector<int> dist(n+1,0);
vector<bool> viz(n+1,false);
queue<int> q;
q.push(x);
viz[x] = true;
while (!q.empty()) {
int nod = q.front();
q.pop();
for (auto [vecin,d] : graf[nod]) {
if (!viz[vecin]) {
viz[vecin] = true;
q.push(vecin);
dist[vecin] = dist[nod] + d;
}
}
}
cout<< abs(dist[y]);
}