添加链接描述
最短路 (没卡spfa哈哈哈
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+9;
#define int long long
int e[N],ne[N],h[N],w[N],idx;
int dist[N];
int vis[N];
void add(int a,int b,int c){
w[idx]=c;
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int st,ed;
void spfa(){
memset(dist,0x3f,sizeof dist);
queue<int>q;
q.push(1);
dist[1]=0;
while(q.size()){
int p=q.front();
q.pop();
vis[p]=0;
for(int i=h[p];~i;i=ne[i]){
int j=e[i];
if(dist[j]>dist[p]+w[i]){
dist[j]=dist[p]+w[i];
if(!vis[j]){
vis[j]=1;
q.push(j);
}
}
}
}
}
signed main(){
memset(h, -1,sizeof dist);
int n,m;
scanf("%lld%lld",&n,&m);
while(m--){
int a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
spfa();
int q;
cin>>q;
while(q--){
int x;
cin>>x;
cout<<dist[x]<<endl;
}
return 0;
}