top1编程
← 返回题目
题解

【入门】城市之间的最短路

1 条题解

  • 0
    @ 2026-7-29 0:19:04
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,d[1005][1005],u,v,w,ans,x,y;
    int main(){
    	memset(d,0x3f3f3f,sizeof d);
    	cin>>n>>m;
    	for(int i=1;i<=m;i++){
    		cin>>u>>v>>w;
    		d[u][v]=min(d[u][v],w);
            d[v][u]=min(d[v][u],w);
    	}
        cin>>x>>y;
    	for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
    	if(d[x][y]==1061109567&&d[y][x]==1061109567) cout<<"No path";
        else cout<<min(d[x][y],d[y][x]);
    	return 0;
    }
    
    • 1