原题来自:USACO 2011 Jan. Gold
USACO 2011 Jan. Gold
Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到T 个城镇 ,编号为 1到 T。这些城镇之间通过 R 条道路(编号为 1 到 R)和P 条航线(编号为 1 到P)连接。每条道路 i 或者航线 i连接城镇 A_i 到 B_i ,花费为 C_i 。
Farmer John
T
1
R
P
i
对于道路,0≤ C_i ≤104 ,然而航线的花费很神奇,花费 C_i 可能是负数。道路是双向的,可以从 A_i 到 B_i ,也可以从 B_i 到 A_i ,花费都是 C_i 。然而航线与之不同,只可以从 A_i 到 B_i 。
0≤
≤104
事实上,由于最近恐怖主义太嚣张,为了社会和谐,出台了一些政策保证:如果有一条航线可以从 A_i 到 B_i ,那么保证不可能通过一些道路和航线从 B_i 回到 A_i 。由于 FJ 的奶牛世界公认十分给力,他需要运送奶牛到每一个城镇。他想找到从发送中心城镇 S 把奶牛送到每个城镇的最便宜的方案,或者知道这是不可能的。
FJ
S
第一行为四个空格隔开的整数:T,R,P,S;
T,R,P,S
第二到第 R+1 行:三个空格隔开的整数(表示一条道路): A_i , B_i 和 C_i ;
R+1
第 R+2 到 R+P+1行:三个空格隔开的整数(表示一条航线): A_i , B_i 和 C_i 。
R+2
R+P+1
输出 T 行,第 i 行表示到达城镇 i 的最小花费,如果不存在输出 NO PATH。
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 号城镇。
2
3
4
5
6
5,5,10
3→5,4→6 和 1→3
数据范围:
对于全部数据, 1≤T≤2.5×10^4,1≤R,P≤5×10^4,1≤A_i,B_i,S≤T 。保证对于所有道路, 0≤C_i≤10^4 ,对于所有航线, −10^4≤C_i≤10^4 。