草稿涂满荒唐画,摸鱼容易上课难 • 8个月前
#include<bits/stdc++.h>
using namespace std;
int g[1005][1005];
int main(){
int n,m,x;
scanf("%d%d%d",&n,&m,&x);
memset(g,0x3f,sizeof g);
for(int i=0;i<m;i++){
int l,r,len;
scanf("%d%d%d",&l,&r,&len);
g[l][r]=min(g[l][r],len); //重边
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
}
}
}
int ans=-1;
g[x][x]=0; //自己到自己家必须为0,不然会输出0x3f的值
for(int i=1;i<=n;i++){
ans=max(ans,g[i][x]+g[x][i]); //来回
}
cout<<ans<<endl;
return 0;
}
评论:
请先登录,才能进行评论