P15238 [NHSPC 2025] 电动车充电规划问题

题目描述

小明买了一台电动车,其电池容量为 $ B $ 。小明知道电动车的初始电量 $ b $ ,他要规划从起点开到终点的路线,使得所需的充电费用越少越好。电动车在一些路段会耗电(如平路或是上坡),在一些路段会充电(如下坡)。**这些充电路段是不会收费的**。我们用一个有向图表示地图,边的权重代表电动车开过此边会让电量增加或减少,如果开过此边会充电,则边的权重为一个正数,反之如果开过此边会耗电,则边的权重为一个负数。我们假设图没有正环。 电动车在行驶时,电量需要永远大于等于 $ 0 $ ,而且无论充电量多大,电量最多为 $ B $ 。更明确地说,令 $ p $ 为电动车目前电量,并考虑一个权重为 $ w $ 的边:如果 $ w $ 非负数,则电动车一定可以开过此边(即使电量 $ p=0 $ ),且剩余电量为 $ \min(B, p+w) $ ;如果 $ w $ 是负数,且 $ p+w \ge 0 $ ,则电动车可以开过此边,且开过此边后的剩余电量为 $ p+w $ ;然而,如果 $ p+w

输入格式

$$ \begin{aligned} &n \; m \; s \; t \\ &B \; b \\ &u_1 \; v_1 \; w_1 \\ &u_2 \; v_2 \; w_2 \\ &\vdots \\ &u_m \; v_m \; w_m \\ &g \; p_1 \; p_2 \; \cdots \; p_g \end{aligned} $$ - $n$ 为节点数。 - $m$ 为边数。 - $s$ 为起点编号。 - $t$ 为终点编号。 - $B$ 为电池容量。 - $b$ 为电池初始电量。 - $u_i, v_i, w_i$ 代表图中有一个边由节点 $u_i$ 至节点 $v_i$,且权重为 $w_i$。 - $g$ 为充电站个数。 - $p_i$ 为第 $i$ 个充电站的节点编号。

输出格式

$$a$$ - $a$ 代表最少所需的充电费用。如果不存在路径抵达终点,则 $a = -1$。

说明/提示

### 数据限制 * $1 \le n\le 10^3$。 * $1 \le m\le 10^4$。 * $1 \le s,t\le n$。 * $1 \le B\le 10^9$。 * $0 \le b\le B$。 * $1 \le u_i, v_i\le n$,且 $u_i \neq v_i$。 * $-10^9 \le w_i\le 10^9$。 * $0 \le g\le n$。 * $1 \le p_i \le n$。 * 保证图没有正环。 * 输入的数皆为整数。 ### 评分说明 本题共有四组子任务,条件限制如下所示。 每一组可有一或多笔测试资料,该组所有测试资料皆需答对才会获得该组分数。 | 子任务 | 分数 | 额外输入限制 | | :------: | :----: | ------------ | | 1 | 15 | 输入满足所有路段都不会充电,即 $w_i\le 0$, 且没有充电站,即 $g = 0$。 | | 2 | 30 | 输入满足所有路段都不会充电,即 $w_i\le 0$。 | | 3 | 23 | 输入满足没有充电站,即 $g = 0$。 | | 4 | 32 | 无额外限制。 |