#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
#include<map>
#include <cmath>
using namespace std;
int tata[30001];
int dist[30001];
int radacina(int i) {
if (tata[i]==i)
return i;
int r = radacina(tata[i]);
dist[i]+=dist[tata[i]];
tata[i]=r;
return r;
}
void unesteSate(int i, int j, int d) {
int root_i=radacina(i);
int root_j=radacina(j);
if (root_i !=root_j) {
tata[root_i]=root_j;
dist[root_i]=dist[j]-dist[i]+d;
}
}
int main() {
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y;
f>>n>>m>>x>>y;
for (int i=1;i<=n;++i) {
tata[i]=i;
dist[i]=0;
}
for (int i=0;i<=m;++i) {
int u,v,d;
f>>u>>v>>d;
unesteSate(u,v,d);
}
radacina(x);
radacina(y);
g<<abs(dist[x]-dist[y])<<endl;
f.close();
g.close();
return 0;
}