#include <cstdio>
#define N 6210
using namespace std;
int n,m,s,t;
int v[N],w[N],fir[N],nxt[N],cnt=1;
int dis[N],vis[N];
void add(int x,int y,int z){
nxt[cnt]=fir[x];
fir[x]=cnt;
v[cnt]=y;
w[cnt]=z;
cnt++;
}
int main(){
scanf("%d%d%d%d",&n,&m,&s,&t);
for(int i=0;i<N;i++){
fir[i]=-1;
dis[i]=0x7fffffff;
}
dis[s]=0;
for(int i=1;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
for(int i=1;i<=n;i++){
int mmin=0x7fffffff,k=-1;
for(int j=1;j<=n;j++){
if(dis[j]<mmin&&vis[j]==0){
mmin=dis[j];
k=j;
}
}
if(k==-1)break;
vis[k]=1;
for(int j=fir[k];j!=-1;j=nxt[j]){
if(vis[v[j]]==0&&dis[v[j]]>dis[k]+w[j]){
dis[v[j]]=dis[k]+w[j];
}
}
}
printf("%d",dis[t]);
return 0;
}