#include <vector>
#include <utility>
#include <fstream>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
bool vizitat[30001];
int distanta[30001];
vector<pair<int, int>> graf[30001];
void DFS(int nod) {
vizitat[nod]=true;
for (auto vecin : graf[nod]) {
if (!vizitat[vecin.first]) {
distanta[vecin.first]=distanta[nod] + vecin.second;
DFS(vecin.first);
}
}
}
int main() {
int N, M, X, Y ,i,j, d;
fin>> N>> M>> X>>Y;
for (int c=1; c<=M; c++) {
fin>>i>>j>>d;
graf[i].push_back({j,d});
graf[j].push_back({i,-d});
}
distanta[X]=0;
DFS(X);
fout<<distanta[Y];
fin.close();
fout.close();
}