2783: 「一本通 3.2 练习 7」道路和航线
Description
原题来自:USACO 2011 Jan. Gold
Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到 TTT 个城镇 ,编号为 111 到 TTT。这些城镇之间通过 RRR 条道路(编号为 111 到 RRR)和 PPP 条航线(编号为 111 到 PPP)连接。每条道路 iii 或者航线 iii 连接城镇 AiA_iAi 到 BiB_iBi,花费为 CiC_iCi。
对于道路,0≤Ci≤1040 le C_i le 10^40≤Ci≤104,然而航线的花费很神奇,花费 CiC_iCi 可能是负数。道路是双向的,可以从 AiA_iAi 到 BiB_iBi,也可以从 BiB_iBi 到 AiA_iAi,花费都是 CiC_iCi。然而航线与之不同,只可以从 AiA_iAi 到 BiB_iBi。
事实上,由于最近恐怖主义太嚣张,为了社会和谐,出台了一些政策保证:如果有一条航线可以从 AiA_iAi 到 BiB_iBi,那么保证不可能通过一些道路和航线从 BiB_iBi 回到 AiA_iAi。由于 FJ 的奶牛世界公认十分给力,他需要运送奶牛到每一个城镇。他想找到从发送中心城镇 SSS 把奶牛送到每个城镇的最便宜的方案,或者知道这是不可能的。
Input
第一行为四个空格隔开的整数:T,R,P,ST, R, P,ST,R,P,S;
第二到第 R+1R+1R+1 行:三个空格隔开的整数(表示一条道路):Ai,BiA_i, B_iAi,Bi 和 CiC_iCi;
第 R+2R+2R+2 到 R+P+1R+P+1R+P+1 行:三个空格隔开的整数(表示一条航线):Ai,BiA_i, B_iAi,Bi 和 CiC_iCi。
Output
输出 TTT 行,第 iii 行表示到达城镇 iii 的最小花费,如果不存在输出 NO PATH
。
HINT
样例输入
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
样例说明
一共六个城镇。在 111 和 222,333 和 444,555 和 666 之间有道路,花费分别是 5,5,105,5,105,5,10。同时有三条航线:3→53 o 53→5,4→64 o 64→6 和 1→31 o 31→3,花费分别是 −100,−100,−10-100,-100,-10−100,−100,−10。FJ 的中心城镇在城镇 444。FJ 的奶牛从 444 号城镇开始,可以通过道路到达 333 号城镇。然后他们会通过航线达到 555 和 666 号城镇。但是不可能到达 111 和 222 号城镇。
对于全部数据,1≤T≤2.5×104,1≤R,P≤5×104,1≤Ai,Bi,S≤T1le Tle 2.5 imes 10^4,1le R,Ple 5 imes 10^4,1le A_i,B_i,Sle T1≤T≤2.5×104,1≤R,P≤5×104,1≤Ai,Bi,S≤T。保证对于所有道路,0≤Ci≤1040 le C_i le 10^40≤Ci≤104,对于所有航线,−104≤Ci≤104-10^4 le C_i le 10^4−104≤Ci≤104。