#1552. [USACO11JAN] Roads and Planes G

[USACO11JAN] Roads and Planes G

题面描述

Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到 TT 个城镇 ( 1T25,0001 \le T \le 25,000 ),编号为 11TT 。这些城镇之间通过 RR 条道路 ( 1R50,0001 \le R \le 50,000 ,编号为 11RR ) 和 PP 条航线 ( 1P50,0001 \le P \le 50,000 ,编号为 11PP ) 连接。每条道路 ii 或者航线 ii 连接城镇 AiA_i ( 1AiT1 \le A_i \le T )到 BiB_i ( 1BiT1 \le B_i \le T ),花费为 CiC_i

对于道路 0Ci10,0000 \le C_i \le 10,000 ;然而航线的花费很神奇,花费 CiC_i 可能是负数( 10,000Ci10,000-10,000 \le C_i \le 10,000 )。道路是双向的,可以从 AiA_iBiB_i,也可以从 BiB_iAiA_i ,花费都是 CiC_i 。然而航线与之不同,只可以从 AiA_iBiB_i

事实上,由于最近恐怖主义太嚣张,为了社会和谐,出台 了一些政策保证:如果有一条航线可以从 AiA_iBiB_i,那么保证不可能通过一些道路和航线从 BiB_i 回到 AiA_i 。由于 FJFJ 的奶牛世界公认十分给力,他需要运送奶牛到每一个城镇。他想找到从发送中心城镇 SS ( 1ST1 \le S \le T) 把奶牛送到每个城镇的最便宜的方案,或者知道这是不可能的。

输入格式

R+P+1R+P+1

11 行:四个整数 TT , RR , PPSS ,分别表示城镇的数量,道路的数量,航线的数量和中心城镇。

22R+1R+1 行:每行三个整数 AiA_i , BiB_iCiC_i ,描述一条道路。

R+2R+2R+P+1R+P+1 行:每行三个整数 AiA_i , BiB_iCiC_i ,描述一条航线。

输出格式

TT 行,第 ii 行输出城市 SS 到城市 ii 的最小花费。如果不能到达,输出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

提示

66 个城镇。 11 号镇和 22 号镇、33 号镇和 44 号镇、55 号镇和 66 号镇之间有道路,费用为 5、5、10; 有从 33 号镇到 55 号镇,从 44 号镇到 66 号镇,从 11 号镇到 33 号镇的飞机,费用为 -100、-100-10。 FJ 的总部设在 44 镇。

FJ 的奶牛从 44 号镇开始,可以在路上到达 33 号镇。 他们可以使用从 33 号和 44 号镇乘坐飞机到达 55 号和 66 号镇。 但是,没有办法到达 11 号和 22 号城镇,因为它们不能去

在平面上从 11 向后移动到 33