#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,m,u,v,tot,to[N*3],head[N],nex[N*3],vis[N];
long long w,dis[N],a[N],val[N*3];
void add(int u1,int v1,long long w1){
to[++tot]=v1;
val[tot]=w1;
nex[tot]=head[u1];
head[u1]=tot;
}
priority_queue< pair<long long,int>, vector< pair<long long,int> >, greater< pair<long long,int> > > q;
void dijkstra(){
memset(dis,0x3f,sizeof(dis));
dis[0]=0; q.push(make_pair(0,0));
while(!q.empty()){
pair<long long,int> k=q.top(); q.pop(); int u=k.second; long long s=k.first;
if (vis[u]) continue;
vis[u]=1;
for (int e=head[u]; e; e=nex[e]){
int v=to[e]; long long w=val[e];
if (dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
q.push(make_pair(dis[v],v));
}
}
}
}
int main(){
scanf("%d%d",&n,&m);
for (int i=1; i<=m; i++){
scanf("%d%d%lld",&u,&v,&w);
add(u,v,w*2); add(v,u,w*2);
}
for (int i=1; i<=n; i++){
scanf("%lld",&a[i]);
add(0,i,a[i]); add(i,0,a[i]);
}
dijkstra();
for (int i=1; i<=n; i++) printf("%lld ",dis[i]);
}
为什么n=m=200000时超时了啊