题库/YBT0184

#YBT0184. 道路和航线

    传统题 难度: 提高 标签>一本通道路连通块拓扑排序块内Dijkstra负权航线
时间限制1000 ms
内存限制64 MiB
通过率100%1 / 1 次提交
题目描述 查看题解 开始编程Alt+E

YBT0184 · 道路和航线

退出在线编程模式
提高 读懂题意,让每一次思考成为成长。
时间限制1000 ms
内存限制64 MiB
通过率100%1 / 1 次提交

题目描述

原题来自:USACO 2011 Jan. Gold Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到 TT 个城镇 ,编号为 11 到 TT。这些城镇之间通过 RR 条道路(编号为 11 到 RR)和 PP 条航线(编号为 11 到 PP)连接。每条道路 ii 或者航线 ii 连接城镇 AiA_i 到 BiB_i,花费为 CiC_i​​ 。 对于道路,0≤Ci≤1040 \le C_i \le 10^4​​ ,然而航线的花费很神奇,花费 CiC_i 可能是负数。道路是双向的,可以从 AiA_i 到 BiB_i​​ ,也可以从 BiB_i 到 AiA_i​​ ,花费都是 CiC_i​​ 。然而航线与之不同,只可以从 AiA_i 到 BiB_i​​ 。 事实上,由于最近恐怖主义太嚣张,为了社会和谐,出台了一些政策保证:如果有一条航线可以从 AiA_i 到 BiB_i​​ ,那么保证不可能通过一些道路和航线从 BiB_i 回到 AiA_i​​ 。由于 FJ 的奶牛世界公认十分给力,他需要运送奶牛到每一个城镇。他想找到从发送中心城镇 SS 把奶牛送到每个城镇的最便宜的方案,或者知道这是不可能的。

输入

第一行为四个空格隔开的整数:T,R,P,ST,R,P,S; 第二到第 R+1R+1 行:三个空格隔开的整数(表示一条道路):Ai,BiA_i, B_i 和 CiC_i; 第 R+2R+2 到 R+P+1R+P+1 行:三个空格隔开的整数(表示一条航线):Ai,BiA_i, B_i​​ 和 CiC_i​​ 。

输出

输出 TT 行,第 ii 行表示到达城镇 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

提示

样例说明 一共六个城镇。在 11 和 22,33 和 44,55 和 66 之间有道路,花费分别是 55,55,1010。同时有三条航线:3→53→5,4→64→6 和 1→31→3,花费分别是 −100100,−100100,−1010。FJ 的中心城镇在城镇 44。FJ 的奶牛从 44 号城镇开始,可以通过道路到达 33 号城镇。然后他们会通过航线达到 55 和 66 号城镇。但是不可能到达 11 和 22 号城镇。 数据范围: 对于全部数据,1≤T≤2.5×104,1≤R,P≤5×104,1≤Ai,Bi,S≤T1≤T≤2.5×10^4,1≤R,P≤5×10^4,1≤A_i,B_i,S≤T。保证对于所有道路,0≤Ci≤1040≤C_i≤10^4,对于所有航线,−104≤Ci≤104−10^4≤C_i≤10^4​​ 。

评测数据说明

本题使用按题意独立构造、双实现核对的训练数据,共10个测试点,非原站或官方原始数据。总分100分。

题目信息

#1564
100%

1 次通过 · 1 次提交

练习难度 提高
时间限制
1000ms
内存限制
64MiB
上传者