提交时间:2023-02-04 16:59:40
运行 ID: 68341
#include<bits/stdc++.h> using namespace std; int h[16],x,y,e[64],a,b,l,ne[64],w[64],idx,st[16],dis[16],n,m; void add(int a,int b,int l){e[idx]=b,w[idx]=l;ne[idx]=h[a],h[a]=idx++;} void Djs(int x,int y){ memset(dis,0x3f,sizeof dis); memset(st,0,sizeof st); dis[x]=0; for(int i=1;i<=n;i++){ int t=-1; for(int j=1;j<=n;j++)if(!st[j]&&(!(t+1)||dis[j]<dis[t]))t=j; if(t==y)return; st[t]=1; for(int j=h[t];j+1;j=ne[j])dis[e[j]]=min(dis[e[j]],dis[t]+w[j]); } } int main(){ while(cin>>n>>m){ memset(h,-1,sizeof h); while(m--)cin>>a>>b>>l,add(a,b,l),add(b,a,l); cin>>x>>y; Djs(x,y); if(0x3f3f3f3f-dis[y])cout<<dis[y]; else cout<<"No path"; cout<<"\n"; } return 0; }