AC

草稿涂满荒唐画,摸鱼容易上课难  •  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;
}

评论:

请先登录,才能进行评论