11 条题解

  • 1
    @ 2023-2-1 12:05:07
    #include<bits/stdc++.h>
    using namespace std;
    #pragma GCC optimize(2)
    long long read(){
    	long long ans=0,f=1;
    	char ch=getchar();
    	while(!isdigit(ch)){
    		f*=(ch=='-')?-1:1;
    		ch=getchar();
    	}
    	while(isdigit(ch)){
    		ans=(ans<<3)+(ans<<1)+(ch^48);
    		ch=getchar();
    	}
    	return ans*f;
    }
    const int MAXN=1e3+5;
    int e[MAXN][MAXN],n,m,x;
    int main(){
    	n=read(),m=read(),x=read();
    	memset(e,0x3f,sizeof(e));
    	for(int i=1;i<=m;i++){
    		int A=read(),B=read(),T=read();
    		e[A][B]=min(e[A][B],T);
    	}
    	for(int k=1;k<=n;k++){
    		for(int i=1;i<=n;i++){
    			for(int j=1;j<=n;j++){
    					e[i][j]=min(e[i][j],e[i][k]+e[k][j]);
    			}
    		}
    	}
    	int ans=-1;
    	for(int i=1;i<=n;i++){
    		if(i!=x&&(e[x][i]!=0x3f3f3f3f&&e[i][x]!=0x3f3f3f3f)) 
    		ans=max(ans,e[x][i]+e[i][x]);
    	}
    	printf("%d",ans);
    }
    

    信息

    ID
    2
    时间
    1000ms
    内存
    16MiB
    难度
    5
    标签
    递交数
    363
    已通过
    147
    上传者