#include<bits/stdc++.h>
using namespace std;
vector<int>edge[10005];
int n,m,s,end;
int dis[10005];
void vis[10001];
const int inf=2147483646;
void spfa()
{
queue<int> q;
for(int i=1;i<=n;i++)
{
dis[i]=inf;
vis[i]=0;
}
q.push(s);
dis[s]=0;
vis[s]=1;
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=0;
for(int e=0;e<edge[u].size();e++)
{
int v=edge[u][e];
if(dis[v]>dis[u]+mp[u][v])
{
dis[v]=dis[u]+mp[u][v];
if(vis[v]==0)
{
vis[v]=1;
q.push(v);
}
}
}
}
}
int main()
{
cin>>n>>m>>s>>end;
for(int i=1;i<=n;i++)
{
int a,b,c;
cin>>a>>b>>c;
mp[a][b]=mp[b][a]=c;
edge[a].push_back(b);
edge[b].push_back(a);
}
spfa();
cout<<dis[end];
return 0;
}