CF1253F.Cheap Robot
省选/NOI-
通过率:0%
时间限制:3.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You're given a simple, undirected, connected, weighted graph with n nodes and m edges.
Nodes are numbered from 1 to n. There are exactly k centrals (recharge points), which are nodes 1,2,…,k.
We consider a robot moving into this graph, with a battery of capacity c, not fixed by the constructor yet. At any time, the battery contains an integer amount x of energy between 0 and c inclusive.
Traversing an edge of weight wi is possible only if x≥wi, and costs wi energy points (x:=x−wi).
Moreover, when the robot reaches a central, its battery is entirely recharged (x:=c).
You're given q independent missions, the i-th mission requires to move the robot from central ai to central bi.
For each mission, you should tell the minimum capacity required to acheive it.
给你一个简单、无向、连通、带权图,包含 n 个节点和 m 条边。
节点编号为 1 到 n。图中恰好有 k 个中心节点(即充电点),它们是节点 1,2,…,k。
我们考虑一个在该图中移动的机器人,其电池容量为 c(尚未由构造器确定)。在任意时刻,电池中所含能量为整数 x,满足 0≤x≤c。
只有当当前能量 x≥wi 时,机器人才能遍历一条权重为 wi 的边,且该操作消耗 wi 单位能量(即 x:=x−wi)。
此外,当机器人到达某个中心节点时,其电池将被完全充满(即 x:=c)。
你将收到 q 个相互独立的任务;其中第 i 个任务要求将机器人从中心节点 ai 移动到中心节点 bi。
对每个任务,请输出完成该任务所需的最小电池容量。
输入格式
The first line contains four integers n, m, k and q (2≤k≤n≤105 and 1≤m,q≤3⋅105).
The i-th of the next m lines contains three integers ui, vi and wi (1≤ui,vi≤n, ui=vi, 1≤wi≤109), that mean that there's an edge between nodes u and v, with a weight wi.
It is guaranteed that the given graph is simple (there is no self-loop, and there is at most one edge between every pair of nodes) and connected.
The i-th of the next q lines contains two integers ai and bi (1≤ai,bi≤k, ai=bi).
第一行包含四个整数 n、m、k 和 q(满足 2≤k≤n≤105,且 1≤m,q≤3⋅105)。
接下来的 m 行中,第 i 行包含三个整数 ui、vi 和 wi(满足 1≤ui,vi≤n,ui=vi,1≤wi≤109),表示节点 ui 与 vi 之间存在一条权重为 wi 的边。
保证所给图是简单图(无自环,且任意两个节点之间至多只有一条边)且连通。
接下来的 q 行中,第 i 行包含两个整数 ai 和 bi(满足 1≤ai,bi≤k,且 ai=bi)。
输出格式
You have to output q lines, where the i-th line contains a single integer : the minimum capacity required to acheive the i-th mission.
你需要输出 q 行,其中第 i 行包含一个整数:完成第 i 项任务所需的最小容量。
输入输出样例
输入#1
10 9 3 1 10 9 11 9 2 37 2 4 4 4 1 8 1 5 2 5 7 3 7 3 2 3 8 4 8 6 13 2 3
输出#1
12
输入#2
9 11 3 2 1 3 99 1 4 5 4 5 3 5 6 3 6 4 11 6 7 21 7 2 6 7 8 4 8 9 3 9 2 57 9 3 2 3 1 2 3
输出#2
38 15
说明/提示
In the first example, the graph is the chain 10−9−2C−4−1C−5−7−3C−8−6, where centrals are nodes 1, 2 and 3.
For the mission (2,3), there is only one simple path possible. Here is a simulation of this mission when the capacity is 12.
- The robot begins on the node 2, with c=12 energy points.
- The robot uses an edge of weight 4.
- The robot reaches the node 4, with 12−4=8 energy points.
- The robot uses an edge of weight 8.
- The robot reaches the node 1 with 8−8=0 energy points.
- The robot is on a central, so its battery is recharged. He has now c=12 energy points.
- The robot uses an edge of weight 2.
- The robot is on the node 5, with 12−2=10 energy points.
- The robot uses an edge of weight 3.
- The robot is on the node 7, with 10−3=7 energy points.
- The robot uses an edge of weight 2.
- The robot is on the node 3, with 7−2=5 energy points.
- The robot is on a central, so its battery is recharged. He has now c=12 energy points.
- End of the simulation.
Note that if value of c was lower than 12, we would have less than 8 energy points on node 4, and we would be unable to use the edge 4↔1 of weight 8. Hence 12 is the minimum capacity required to acheive the mission.
—
The graph of the second example is described here (centrals are red nodes):

The robot can acheive the mission (3,1) with a battery of capacity c=38, using the path 3→9→8→7→2→7→6→5→4→1
The robot can acheive the mission (2,3) with a battery of capacity c=15, using the path 2→7→8→9→3
在第一个例子中,图是一条链:10−9−2C−4−1C−5−7−3C−8−6,其中中心节点(centrals)为节点 1、2 和 3。
对于任务 (2,3),仅存在一条简单路径。以下是当电池容量为 12 时该任务的模拟过程:
- 机器人起始于节点 2,初始能量 c=12;
- 机器人经过一条权值为 4 的边;
- 机器人到达节点 4,剩余能量为 12−4=8;
- 机器人经过一条权值为 8 的边;
- 机器人到达节点 1,剩余能量为 8−8=0;
- 机器人位于一个中心节点,因此电池被充满,当前能量变为 c=12;
- 机器人经过一条权值为 2 的边;
- 机器人到达节点 5,剩余能量为 12−2=10;
- 机器人经过一条权值为 3 的边;
- 机器人到达节点 7,剩余能量为 10−3=7;
- 机器人经过一条权值为 2 的边;
- 机器人到达节点 3,剩余能量为 7−2=5;
- 机器人位于一个中心节点,因此电池被充满,当前能量变为 c=12;
- 模拟结束。
注意:若 c 的值小于 12,则机器人在节点 4 处的能量将少于 8,从而无法使用权值为 8 的边 4↔1。因此,12 是完成该任务所需的最小容量。
—
第二个例子的图结构如下所示(中心节点为红色节点):

机器人可使用容量为 c=38 的电池,沿路径 3→9→8→7→2→7→6→5→4→1 完成任务 (3,1);
机器人可使用容量为 c=15 的电池,沿路径 2→7→8→9→3 完成任务 (2,3)。
输入解题思路,AI测评打分。不知道怎么写?