//无向有权图的最短路径算法——Floyd(弗洛伊德)算法
//时间复杂度为O(n*n*n)
//空间复杂度为T(n*n)
#include<bits/stdc++.h>
#define N 10000001
using namespace std;
int ma[101][101],n,g,s,t;//节点数,路径数 ,起点,终点
int main()
{
cin>>n>>g;
for(int i=1;i<=g;i++)
{
int a,b,x;//一条路径所连接的两个节点,路径的长度
cin>>a>>b>>x;
ma[a][b]=x;
ma[b][a]=x;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(ma[i][j]==0)
{
ma[i][j]=N;
}
}
}
for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(ma[i][j]>ma[i][k]+ma[k][j])
{
ma[i][j]=ma[i][k]+ma[k][j];
}
}
}
}
cin>>s>>t;
cout<<ma[s][t]<<endl;
return 0;
}