因为开了 `long long`
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k,inf;
int dis[400031];
struct EdgeInfo{
int to,w;
};
struct NodeMessage{
int pos,tme;
friend bool operator < (NodeMessage a,NodeMessage b){
return a.tme>b.tme;
}
};
vector<EdgeInfo> G[800031];
void dijkstra(){
memset(dis,127,sizeof(dis));
inf=dis[0]; // 记录一下
priority_queue<NodeMessage> pq;
pq.push({1,0});
while(!pq.empty()){
int npos=pq.top().pos,ntme=pq.top().tme; pq.pop();
if(ntme>dis[npos]) continue;
dis[npos]=ntme;
//if(vis[now.pos]) continue; vis[now.pos]=1;
for(EdgeInfo &i:G[npos])
if(dis[i.to]>ntme+i.w)
pq.push({i.to,ntme+i.w});
}
}
signed main(){
cin>>n>>m>>k;
for(int i=1,u,v,w;i<=m;i++){
cin>>u>>v>>w;
if(w==1) G[u].push_back({v,1}),G[v].push_back({u,1});
else G[u+n].push_back({v+n,1}),G[v+n].push_back({u+n,1});
}
for(int i=1,x;i<=k;i++){
cin>>x;
G[x].push_back({x+n,0}),G[x+n].push_back({x,0});
}
dijkstra();
int ans=min(dis[n],dis[n+n]);
if(ans==inf) cout<<-1;
else cout<<ans;
return 0;
}
```
by InversionShadow @ 2023-09-29 11:05:20
`long long` 占 $8$ 字节,所以他初始化的值应该是 `0x3f3f3f3f3f3f3f3f`
by jqQt0220 @ 2023-09-29 11:07:54
@[ydq1101](/user/672281) @[jqQt0220](/user/678175) 明白了 /bx/bx
by foryou_ @ 2023-09-29 11:09:51