#include <bits/stdc++.h>
#define nmax 30005
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y,l,r,w;
int dist=0;
bool viz[nmax];
vector<pair<int,int>> adj[nmax];
void dfs(int nod, int &rasp) {
viz[nod]=1;
if (nod==y) return;
for (int j=0;j<adj[nod].size();j++) {
if (!viz[adj[nod][j].second])
rasp+=adj[nod][j].first, dfs(adj[nod][j].second, rasp);
}
}
int main() {
f>>n>>m>>x>>y;
for (int i=1;i<=m;i++) {
f>>l>>r>>w;
adj[l].push_back({w,r});
adj[r].push_back({-w,l});
}
dfs(x,dist);
g<<dist;
return 0;
}