#include <fstream>
#define I_F "party.in"
#define O_F "party.out"
#define MAX 1001
using namespace std;
int n,x;
int map[MAX][MAX];
int ans;
void Input();
int Spfa(int x, int y);
void Search();
void Output();
int main()
{
Input();
Search();
Output();
return 0;
}
void Input()
{
ifstream fin(I_F);
long m,i;
fin>>n>>m>>x;
int a,b;
for (i=0; i<m; i++)
{
fin>>a>>b;
fin>>map[a][b];
}
fin.close();
}
int Spfa(int x, int y)
{
int ss[10000]={x};
int m[MAX]={0};
int i,j=0,k=1;
for (; j<k; j++)
for (i=1; i<=n; i++)
if ((map[ss[j]][i]>0)&&((m[ss[j]]+map[ss[j]][j]<m[i])||(m[i]==0)))
{
m[i]=m[ss[j]]+map[ss[j]][i];
ss[k++]=i;
}
return m[y];
}
void Search()
{
int i,t;
for (i=1; i<=n; i++)
if (i!=x)
{
t=Spfa(i,x)+Spfa(x,i);
if (t>ans)
ans=t;
}
}
void Output()
{
ofstream fout(O_F);
fout<<ans<<'\n';
fout.close();
}