#include <fstream>
#include <vector>
using namespace std;
struct Muchie
{
int vecin;
int distanta;
};
int N, M, X, Y;
vector<Muchie> graf[30005];
void citire()
{
ifstream fin("sate.in");
fin >> N >> M >> X >> Y;
for(int k = 1; k <= M; k++)
{
int i, j, D;
fin >> i >> j >> D;
graf[i].push_back({j, D});
graf[j].push_back({i, -D});
}
}
bool vizitat[30005];
int rezultat;
void dfs(int nod, int distCurenta)
{
vizitat[nod] = true;
if(nod == Y)
{
rezultat = distCurenta;
}
for(Muchie m : graf[nod])
{
if(vizitat[m.vecin] == false)
{
dfs(m.vecin, distCurenta + m.distanta);
}
}
}
int main()
{
citire();
dfs(X, 0);
ofstream fout("sate.out");
fout << rezultat << "\n";
return 0;
}