1653 道路和航线 | OJ题库 | CODE STUDY
CODE STUDY
Programming Practice Platform

欢迎回来

1653

道路和航线

Easy 时间限制 1000 ms 内存限制 262144 KB
最短路

题目详情

返回题库

题目描述

原题来自:USACO 2011 Jan. Gold

Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到 T  个城镇 ,编号为 1  到 T 。这些城镇之间通过 R  条道路(编号为 1  到 R )和 P  条航线(编号为 1  到 P )连接。每条道路 i  或者航线 i  连接城镇 Ai  到 Bi ,花费为 Ci ​​ 。

对于道路,$0 \leq C_i \leq 10^4 $ ​​ ,然而航线的花费很神奇,花费 Ci  可能是负数。道路是双向的,可以从 Ai  到 Bi ​​ ,也可以从 Bi  到 Ai ​​ ,花费都是 Ci ​​ 。然而航线与之不同,只可以从 Ai  到 Bi ​​ 。

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

输入描述

第一行为四个空格隔开的整数:T,R,P,S ;

第二到第 R+1  行:三个空格隔开的整数(表示一条道路):Ai,Bi  和 Ci ;

第 R+2  到 R+P+1  行:三个空格隔开的整数(表示一条航线):Ai,Bi ​​ 和 Ci ​​ 。

数据范围:

对于全部数据,$1 \leq T \leq 2.5 \times10^4,1 \leq R,P \leq 5 \times10^4,1 \leq A_i,B_i,S \leq T$。保证对于所有道路,$0 \leq C_i \leq 10^4$,对于所有航线,$−10^4 \leq C_i \leq 10^4 $​​ 。

输出描述

输出 T  行,第 i  行表示到达城镇 i  的最小花费,如果不存在输出 NO PATH。

提示

样例说明

一共六个城镇。在 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  号城镇。

测试样例

样例支持多行内容展示
样例1
输入
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
editor.py

提交前会先自动运行样例。只有样例全部通过,才会进入后端正式判题。