#include<bits/stdc++.h>
using namespace std;
int dis[59],w[59][59],pre[59];
bool isyou[59];
struct node{
int value;
int pos;
};
int main(){
int m;cin>>m;
int n;cin>>n;
int ed;cin>>ed;
for(int i=1;i<=n;i++){
int a,b,c;
cin>>a>>b>>c;
w[a][b]=c;
w[b][a]=c;
}
for(int i=0;i<m;i++){
dis[i]=10000;
pre[i]=-1;
}
dis[0]=0;
for(int i=0;i<m;i++){
node min;
min.value=9999;
min.pos=-1;
int j;
for(j=0;j<m;j++)
if(dis[j]<min.value){
min.value=dis[j];
min.pos=j;
}
isyou[j]=1;
for(int p=1;p<m;j++){
if(w[p][j]!=0&&w[j][p]!=0&&isyou[p]!=1){
int tmp=dis[j]+w[j][p];
if(tmp<dis[p]){
dis[p]=tmp;
pre[p]=j ;
}
}
}
}
cout<<dis[ed];
return 0;
}