#252. 道路与航线

道路与航线

题目描述

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

他想把牛奶送到T\red {T}个城镇,编号为1∼T\red {1\sim T}。

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

每条道路 i\red {i} 或者航线 i\red {i} 连接城镇Ai\red {A_i}到Bi\red {B_i} ,花费为Ci\red {C _i} 。

对于道路,0≤Ci≤10,000\red {0≤C_i ≤10,000};然而航线的花费很神奇,花费Ci\red {C_i}可能是负数(−10,000≤Ci≤10,000)\red {(−10,000≤C _i≤10,000)}。

道路是双向的,可以从Ai\red {A_i}到Bi\red {B _i} ,也可以从Bi\red {B_i}到Ai\red {A_i} ,花费都是Ci\red {C _i} 。

然而航线与之不同,只可以从Ai\red {A_i}到Bi\red {B _i} 。

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

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

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

输入格式

第一行包含四个整数T,R,P,S\red {T,R,P,S}。

接下来R\red {R}行,每行包含三个整数(表示一个道路)Ai,Bi,Ci\red {A _i,B_i ,C _i} 。

接下来P\red {P}行,每行包含三个整数(表示一条航线)Ai,Bi,Ci\red {A_i ,B_i ,C_i} 。

输出格式

第1..T\red {1..T}行:第i\red {i}行输出从S\red {S}到达城镇i\red {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≤T≤25000\red {1≤T≤25000},

1≤R,P≤50000\red {1≤R,P≤50000},

1≤Ai,Bi,S≤T\red {1≤A_i ,B_i ,S≤T},