3052. 道路与航线 标准IO
时间限制:2000 MS 内存限制:64 MB    算法评级:    状态:

农夫约翰正在一个新的销售区域对他的牛奶销售方案进行调查。

他想把牛奶送到$T$ 个城镇,编号为$1∼T$。

这些城镇之间通过 $R$ 条道路 (编号为 $1$ 到 $R$) 和 $P$ 条航线 (编号为 $1$ 到 $P$) 连接。

每条道路 $i$ 或者航线 $i$ 连接城镇 $Ai$ 到 $Bi$,花费为 $Ci$。

对于道路,$0≤Ci≤10,000$;然而航线的花费很神奇,花费 $Ci$ 可能是负数($−10,000≤Ci≤10,000$)。

道路是双向的,可以从 $Ai$到 $Bi$,也可以从 $Bi$ 到 $Ai$,花费都是 $Ci$。

然而航线与之不同,只可以从 $Ai$到 $Bi$。

事实上,由于最近恐怖主义太嚣张,为了社会和谐,出台了一些政策:保证如果有一条航线可以从$Ai$ 到 $Bi$,那么保证不可能通过一些道路和航线从 $Bi$ 回到 $Ai$。

由于约翰的奶牛世界公认十分给力,他需要运送奶牛到每一个城镇。

他想找到从发送中心城镇 $S$ 把奶牛送到每个城镇的最便宜的方案。


输入格式

第一行包含四个整数 $T,R,P,S$。

接下来 $R$ 行,每行包含三个整数(表示一个道路)$Ai,Bi,Ci$。

接下来 $P$ 行,每行包含三个整数(表示一条航线)$Ai,Bi,Ci$。


输出格式

第 $1..T$ 行:第 $i$ 行输出从 $S$ 到达城镇 $i$ 的最小花费,如果不存在,则输出 NO PATH


样例输入

6 3 3 4
1 2 5
3 4 5
5 6 10
3 5 -100
4 6 -100
1 3 -10

样例输出

NO PATH
NO PATH
5
0
-95
-100

提示

 

样例说明

一共六个城镇。在 1 和 2,3 和 4,5 和 6 之间有道路,花费分别是 5,5,10。同时有三条航线:3→5,4→6 和 1→3,花费分别是 -100,−100,−10。FJ 的中心城镇在城镇 4。FJ 的奶牛从 4 号城镇开始,可以通过道路到达 3 号城镇。然后他们会通过航线达到 5 和 6 号城镇。但是不可能到达 1 和 2 号城镇。

数据范围:

对于全部数据,1≤T≤2.5×10^4,1≤R,P≤5×10^4,1≤Ai,Bi,S≤T。保证对于所有道路,0≤Ci≤10^4,对于所有航线,−10^4≤Ci≤10^4​​ 。

代码运行状态:

输出