#include <cstdio>
#include <vector>
#define DIM 100100
using namespace std;
FILE *fin = fopen("sate.in" , "r");
FILE *fout= fopen("sate.out", "w");
int N, M, i, j, x, y, z, D[DIM];
int C[DIM], istart, ifinish;
int F[DIM], p, u, val, d;
vector < int > V[DIM];
void SetUp(){
fscanf(fin, "%d%d%d%d", &N, &M, &istart, &ifinish);
for(i = 1; i <= M; i ++){
fscanf(fin, "%d%d%d", &x, &y, &z);
V[x].push_back(y);
V[x].push_back(z);
V[y].push_back(x);
V[y].push_back(-z);
}
p = 1; u = 1;
C[p] = istart;
return;
}
void BFS(){
while(p <= u){
val = C[p]; F[val] = 1;
for(d = 0; d < V[val].size(); d += 2){
if(F[V[val][d]] == 0){
D[V[val][d]] = D[val] + V[val][d+1];
u ++; C[u] = V[val][d];
}
}
p ++;
}
fprintf(fout, "%d", D[ifinish]);
return;
}
int main(){
SetUp();
BFS();
return 0;
}