#include<bits/stdc++.h>
using namespace std;
int n,m,s,t;
vector<int> v[2505],c[2505];
int val[2505];
bool vis[2505];
int main(){
cin>>n>>m>>s>>t;
while(m--){
int x,y,z;
cin>>x>>y>>z;
v[x].push_back(y);
c[x].push_back(z);
}
for(int i=1;i<=n;i++)val[i]=1000000000;
queue<int> q;
q.push(s);
val[s]=0;
while(!q.empty()){
int now=q.front();q.pop();
vis[now]=0;
for(int i=0;i<v[now].size();i++){
if(val[now]+c[now][i]<val[v[now][i]]){
val[v[now][i]]=val[now]+c[now][i];
if(!vis[v[now][i]]){
q.push(v[now][i]);
vis[v[now][i]]=1;
}
}
}
}
cout<<val[t];
return 0;
}