#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <iostream>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
#define N 500005
#define LL long long
using namespace std;
int fs[N],nt[2*N],dt[2*N],pr[2*N],s1[N],n,m,m1,st,d[5*N];
LL dis[N];
bool bz[N];
void link(int x,int y,int z)
{
nt[++m1]=fs[x];
dt[fs[x]=m1]=y;
pr[m1]=z;
}
void spfa()
{
int l=0,r=1;
d[r]=st;
memset(dis,107,sizeof(dis));
dis[st]=0;
bz[st]=1;
while(l<r)
{
int k=d[++l];
for(int i=fs[k];i;i=nt[i])
{
int p=dt[i];
if(dis[k]+pr[i]<dis[p])
{
dis[p]=dis[k]+pr[i];
if(!bz[p]) d[++r]=p,bz[p]=1;
}
}
bz[k]=0;
}
}
void bfs()
{
int l=0,r=1;
d[r]=st;
memset(bz,0,sizeof(bz));
bz[st]=1;
while(l<r)
{
int k=d[++l];
for(int i=fs[k];i;i=nt[i])
{
int p=dt[i];
if(dis[k]+pr[i]==dis[p])
{
s1[p]=min(s1[p],pr[i]);
if(!bz[p]) d[++r]=p,bz[p]=1;
}
}
}
}
int main()
{
cin>>n>>m;
fo(i,1,m)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
link(x,y,z),link(y,x,z);
}
cin>>st;
memset(s1,107,sizeof(s1));
spfa();
bfs();
LL v=0;
fo(i,1,n) if(i!=st) v+=s1[i];
printf("%lld\n",v);
}