U287351 H.NANA去上课

题目描述

作为acmer,NANA也是需要去参加集训的。现在有$n$个城市,每个城市都在举办集训,在城市$i$参加集训需要报名费$a_i$块钱。你也可以选择可以沿着双向的道路在城市之间移动,有$m$条道路,第$i$条道路可以用于从城市$u_i$到$vi$以及从城市$v_i$到$u_i$,使用这条道路需要花费$w_i$块钱。 NANA在每个城市都有好朋友,他们听说你的编程能力超群,想让你帮忙算一算他们去参加集训的最小花费。对于每个城市$i$,你需要计算一个来自城市$i$的人前往城市$j$($j$可能等于$i$),在那里参加集训,然后返回城市$i$(如果$i$等于$j$就不需要花路费了)的最小花费。

输入格式

第一行两个整数$n$和$m$表示城市数和道路数。 接下来$m$行,每行三个正整数$x_i,y_i,w_i$描述第$i$条边。数据保证没有重边和自环。 最后一行$n$个整数,第$i$个整数$a_i$表示在第$i$个城市参加集训的报名费。

输出格式

输出一行$n$个整数,第$i$个整数表示从第$i$个城市出发到其他城市参加集训的路费、集训费、回到城市i的路费加起来的最小值。

说明/提示

**样例解释** 对于城市1,在自己的城市参加集训花费最小。 对于城市2,可以花8块路费前往城市1,再花6块报名费。 对于城市3,在自己的城市参加集训花费最小。 对于城市4,因为他到达不了其他城市,所以只好在自己的城市参加集训。 **数据规模与约定** 保证$2\le n\le 2*10^5,1\le m \leq 2*10^5,1\leq v_i,u_i\leq n,u_i \neq v_i,1\leq w_i\leq 10^{12},1\leq a_i\leq 10^{12}$。 保证不存在重边。