#include <bits/stdc++.h>
using namespace std;
#define ll long long
const string FILENAME = "sate";
ifstream f(FILENAME + ".in");
ofstream g(FILENAME + ".out");
#ifndef dg
#define cin f
#define cout g
#endif
vector<int> gg[30001];
int vz[30001];
int n,m,x,y;
int ds[30001];
map<pair<int,int>, int> w;
void dfs(int prev, int start) {
vz[start] = 1;
if(prev > 0)
if(prev < start) ds[start] = ds[prev] + w[{prev,start}];
else ds[start] = ds[prev] - w[{start,prev}];
for(auto node : gg[start]) {
if(!vz[node]) dfs(start, node);
}
}
signed main() {
cin >> n >> m >> x >> y;
for(int i=1;i<=m;++i) {
int a,b,c;
cin >> a >> b >> c;
gg[a].push_back(b);
gg[b].push_back(a);
if(a > b) swap(a,b);
w[{a,b}] = c;
}
dfs(-1,x);
cout << ds[y] << '\n';
return 0;
}