#2735. 道路和航线

道路和航线

题目描述

FarmerJohn\red{Farmer John}正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到T\red{T}个城镇 (1<=T<=25,000),\red{(1 <= T <= 25,000),}编号为1T\red{1T}。这些城镇之间通过R\red{R}条道路 (1<=R<=50,000,\red{(1 <= R <= 50,000,}编号为1\red{1}到R)\red{R) }和P\red{P}条航线 (1<=P<=50,000,\red{(1 <= P <= 50,000,}编号为1\red{1}到P)\red{P) }连接。

每条道路i\red{i}或者航线i\red{i}连接城镇Ai(1<=Ai<=T)\red{A_i (1 <= A_i <= T)}到Bi(1<=Bi<=T),\red{B_i (1 <= B_i <= T),}花费为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}。由于FJ\red{FJ}的奶牛世界公认十分给力,他需要运送奶牛到每一个城镇。他想找到从发送中心城镇S(1<=S<=T)\red{S(1 <= S <= T) }把奶牛送到每个城镇的最便宜的方案,或者知道这是不可能的。

输入格式

第1\red{1}行:四个空格隔开的整数: T,R,P,\red{T, R, P, }和S\red{S }

第2\red{2}到R+1\red{R+1}行:三个空格隔开的整数(表示一条道路):Ai,Bi\red{A_i, B_i }和 Ci\red{C_i }

第R+2\red{R+2}到R+P+1\red{R+P+1}行:三个空格隔开的整数(表示一条航线):Ai,Bi\red{A_i, B_i }和 Ci\red{C_i}

输出格式

第1\red{1}到T\red{T}行:从S\red{S}到达城镇i\red{i}的最小花费,如果不存在输出"NOPATH\red{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,\red{1-2,}3−4,\red{3-4,}5−6\red{5-6}之间有道路,花费分别是5,\red{5,}5,\red{5,}10\red{10}。同时有三条航线:3−>5,\red{3->5,} 4−>6\red{4->6}和1−>3,\red{1->3,}花费分别是−100,\red{-100,}−100,\red{-100,}−10\red{-10}。FJ\red{FJ}的中心城镇在城镇4\red{4}。

样例输出解释:

FJ\red{FJ}的奶牛从4\red{4}号城镇开始,可以通过道路到达3\red{3}号城镇。然后他们会通过航线达到5\red{5}和6\red{6}号城镇。 但是不可能到达1\red{1}和2\red{2}号城镇。