#include<bits/stdc++.h>
using namespace std;
const int N=100010;
struct node{
int key,len,next;
};
int n,m,i,j,x,y,z,l,h,t,c[10*N],b[N],dis[N];
node a[10*N];
void spfa(){
memset(dis,0x3f,sizeof(dis));
dis[1]=0;
c[1]=1;
h=0;
t=1;
do{
h++;
for(j=b[c[h]];j!=-1;j=a[j].next){
if(dis[a[j].key]>dis[c[h]]+a[j].len){
dis[a[j].key]=dis[c[h]]+a[j].len;
c[++t]=a[j].key;
}
}
}while(h<t);
}
int main(){
scanf("%d%d",&n,&m);
memset(b,-1,sizeof(b));
for(i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
if(x!=y){
a[++l].key=y;
a[l].len=z;
a[l].next=b[x];
b[x]=l;
a[++l].key=x;
a[l].len=z;
a[l].next=b[y];
b[y]=l;
}
}
spfa();
printf("%d",dis[n]);
return 0;
}
一本通训练指导教程P406 最短路
最新推荐文章于 2022-03-07 00:25:48 发布