景区旅行
题目描述
A市具有n个景点和m条道路,所有景点编号为1,2,…,n。道路是有向且具有一个长度,连接景点中的某两个。
每个景点都有一个加油站。第i个景点的加油站编号也为i,且具有如下性质:
- 若汽车在第i个加油站加油,则需要花费vi元钱。
- 若汽车在第i个加油站加油,则车的油量将被加至油量上限与xi中的较小值。不过如果加油前汽车油量已经不小于xi,则不能在该景点加油。
你准备来到A市旅游。你的汽车的油量上限为X。旅游开始时,汽车没有油。在旅游过程中:
- 如果汽车有油(不为0),汽车可以花费1的汽油从当前景点选择一条道路到达另一个相邻的景点;
- 当汽车在景点i且当前油量小于xi时,汽车可以在这个景点的加油站加油。加油需花费vi元钱,这样汽车油量将被加到min(X,xi)。
一次旅游花的钱为所有加油花费的钱之和。一次旅游经过的总路程为所有开车走过的道路的长度的和。可以在一个加油站多次加油,也可以多次走过同一条路,费用和路程都要相应地累加进总和中。
你计划旅游T次,每次旅游前,你都指定了这次旅游从哪里出发,至少应该开车经过多远的路程。由于你的经济状况不同,每次出发前带上的钱也不同。为了省钱,你需要在旅游前先规划好旅游经过的道路和在哪些加油站进行加油,使得从起点出发,按照该路线旅游结束后经过的路程不少于你定下的目标,且花的钱尽可能少。请你提前计算出这T次旅游每次结束后最多可以剩下多少钱。
输入格式
输入第一行包含四个正整数n,m,C,T,每两个整数之间用一个空格隔开,分别表示景点数、道路数、汽车油量上限和旅行次数。
接下来n行,每行包含两个正整数vi,xi,每两个整数之间用一个空格隔开,按编号顺序依次表示编号为1,2,3,…,n的景点的费用和油量。
接下来m行,每行包含三个正整数ai,bi,li,每两个整数之间用一个空格隔开,表示一条从编号为ai的景点到编号为bi的景点的道路,道路的长度为li。保证ai=bi,但从一个景点到另一个景点可能有多条道路。
最后T行,每行包含三个正整数si,qi,di,描述一次旅游计划,旅游的起点为编号为si的景点,出发时带了qi元钱,目标路程为di。
输出格式
输出T行,每行一个整数,第i行的整数表示第i次旅游结束后最多剩下多少元钱。如果旅游无法完成,也就是说不存在从景点si出发用不超过qi元钱经过不小于di的路程的路线,则该行输出−1。
数据范围与提示
| 测试点 |
n |
m |
C |
T |
vi,xi |
特殊性质 |
| 1 |
≤10 |
=n−1 |
≤10 |
=1 |
≤10 |
1,2 |
| 2 |
≤10 |
| 3 |
| 4 |
| 5 |
=10 |
2 |
| 6 |
=15 |
≤20 |
| 7 |
=20 |
| 8 |
≤100 |
=n−1 |
≤1000 |
≤50 |
≤100 |
1,3 |
| 9 |
| 10 |
| 11 |
≤40 |
≤400 |
3 |
| 12 |
| 13 |
≤60 |
≤600 |
≤103 |
无 |
| 14 |
| 15 |
≤80 |
≤800 |
| 16 |
≤105 |
≤103 |
≤105 |
| 17 |
≤90 |
≤900 |
| 18 |
| 19 |
≤100 |
≤1000 |
| 20 |
≤105 |
其中,特殊性质如下:
- 特殊性质1:所有ai=i,bi=i+1,li=1。
- 特殊性质2:所有di≤103。
- 特殊性质3:所有qi≤100。
对于100%的测试点,保证2≤n≤100,1≤m≤1000,1≤C,T≤105,1≤ai,bi,li≤n,1≤vi,xi≤105,1≤si≤n,1≤qi≤n2,1≤di≤109。
样例
6 6 3 2
4 1
6 2
2 1
8 1
5 4
9 1
1 2 1
1 3 1
2 4 1
3 5 1
4 6 1
5 6 1
1 12 3
1 9 3
2
-1
说明
T城的景区和道路如下图所示:
第1次旅游,最优路线为先在景点1加油,花费4元,此时油量为1,然后到景点2,此时油量为0,在景点2加油,花费6元,此时油量为2,接着到景点4,此时油量为1,最后到景点6,总路程为3,最后剩余12−4−6=2元。
第2次旅游,只用9元无论如何也无法走3的路程,因此旅游无法完成。
见trip2.in
见trip2.ans