90分代码求调,第五个点过不了!
#include<bits/stdc++.h>
using namespace std;
#define int long long
int const N=2e5+100;
int n,m,h[N],cnt,s1[N],s2[N],q[N];
struct bian{
int ne,zhi,w;
}a[N];
void add(int x,int y,int z){
a[++cnt].zhi=y;
a[cnt].w=z;
a[cnt].ne=h[x];
h[x]=cnt;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
add(x,y,z);
add(y,x,z);
}
memset(s1,127,sizeof(s1));
memset(s2,127,sizeof(s2));
s1[1]=0;
int tou=0,wei=0;
q[++tou]=1;
while(wei<tou){
int u=q[++wei];
for(int e=h[u];e;e=a[e].ne){
int v=a[e].zhi,w=a[e].w;
if(s1[u]+w<s1[v]){
if(s2[u]+w<s1[v])s2[v]=s2[u]+w;
else s2[v]=s1[v];
s1[v]=s1[u]+w;
q[++tou]=v;
}else if(s1[u]+w>s1[v]){
if(s1[u]+w<s2[v]){
s2[v]=s1[u]+w;
q[++tou]=v;
}
}else if(s1[u]+w==s1[v]){
if(s2[u]+v<s2[v])s2[v]=s2[u]+w;
}
}
}
cout<<s2[n];
return 0;
}