显示代码纯文本
#include <cstdio>
using namespace std;
int map[1001][1001]={{0}};
int main(void)
{
freopen("sparty.in","r",stdin);
freopen("sparty.out","w",stdout);
int i,j,k,n,m,pos,a,b,t,maxt=0;
scanf("%d %d %d\n",&n,&m,&pos);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
map[i][j]=32767;
for (i=1;i<=n;i++)
map[i][i]=0;
for (i=1;i<=m;i++)
{
scanf("%d %d %d\n",&a,&b,&t);
map[a][b]=t;
}
for (k=1;k<=n;k++)
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (map[i][j]>map[i][k]+map[k][j])
map[i][j]=map[i][k]+map[k][j];
for (i=1;i<=n;i++)
{
t=map[i][pos]+map[pos][i];
if (t>maxt)
maxt=t;
}
printf("%d\n",maxt);
fclose(stdin);
fclose(stdout);
return(0);
}