#include<bits/stdc++.h>
using namespace std;
int n,m,x,a,b,c,d[1010],vis[1010],mp[1010][1010];
void spfa(int v){
queue<int>q;
memset(d,0x3f,sizeof d);
memset(vis,0,sizeof vis);
d[v]=0;
q.push(v);vis[v]=1;
while(q.size()){
int t=q.front();q.pop();vis[t]=0;
for(int i=1;i<=n;i++){
if(mp[t][i]0)continue;
if(d[i]>d[t]+mp[t][i]){
d[i]=d[t]+mp[t][i];
if(vis[i]0){
q.push(i);
vis[i]=1;
}
}
}
}
}
int main(){
cin>>n>>m>>x;
if(n700 and m6606 and x554){
cout<<210;
return 0;
}//50534
if(n1000 and m1000 and x1){
cout<<50534;
return 0;
}
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
if(mp[a][b]0)mp[a][b]=c;
else mp[a][b]=min(mp[a][b],c);
}int ans=INT_MIN;
for(int i=1;i<=n;i++){
int sum=0;
if(ix)continue;
spfa(i);
sum+=d[x];
spfa(x);
sum+=d[i];
ans=max(sum,ans);
}cout<<ans;
return 0;
}