提交时间:2023-02-02 16:50:53

运行 ID: 68182

#include<bits/stdc++.h> using namespace std; int n,m,d[201][201]; void input(){ int x,y,z; memset(d,0x3f,sizeof(d)); scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) d[i][i]=0; for(int i=1;i<=m;i++){ scanf("%d %d %d",&x,&y,&z); d[x][y]=min(d[x][y],z); d[y][x]=min(d[y][x],z); } } void Floyd(){ for(int t=1;t<=n;t++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ d[i][j]=min(d[i][j],d[i][t]+d[t][j]); } } } } void output(){ int x,y; scanf("%d %d",&x,&y); if(d[x][y]>=0x3f3f3f3f/2) printf("No path\n"); else printf("%d\n",d[x][y]); } int main(){ input();Floyd();output(); return 0; }