1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int INF=0x3f3f3f3f; int n,m; struct egh{ int from,to,len,next; }a[100]; int pre[20]; int k; int s,t; int d[20]; bool f[20]; void add(int u,int v,int l){ a[++k]={u,v,l,pre[u]}; pre[u]=k; } void dijstra(){ memset(d,0x3f,sizeof(d)); d[s]=0; for (int i=1;i<=n;i++){ int mi=-1; for (int j=1;j<=n;j++){ if (!f[j]&&(mi==-1||d[mi]>d[j]))mi=j; } f[mi]=true; for (int j=pre[mi];j!=0;j=a[j].next){ int to=a[j].to; if (!f[to]&&d[mi]+a[j].len<d[to])d[to]=d[mi]+a[j].len; } } } int main(){ cin>>n>>m; int x,y,l; for (int i=1;i<=m;i++){ cin>>x>>y>>l; add(x,y,l); add(y,x,l); } cin>>s>>t; dijstra(); if (d[t]==INF)cout<<"No path"; else cout<<d[t]; return 0; }
- 1
信息
- ID
- 1040
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 6
- 标签
- 递交数
- 16
- 已通过
- 13
- 上传者