P16273 [蓝桥杯 2026 省 Java B 组] 回程
题目描述
给定一张包含 $n$ 个点、$m$ 条无向边的图,点的编号为 $1 \sim n$。每条边连接两个不同的点,且可能存在重边。每条无向边由三个整数 $u, v, w$ 描述,表示点 $u$ 与点 $v$ 之间有一条无向边,其代价为 $w$。
你需要从点 $n$ 出发,到达点 $1$。
图中有一个特殊点 $X$。当第一次到达点 $X$ 时,可以获得 **3** 次特殊机会。若 $X = n$,则表示出发时就已经获得这 **3** 次特殊机会。
在之后的行进过程中,每次经过一条边时,都可以选择是否使用一次特殊机会:
- 如果不使用,则经过这条边的代价为该边原本的代价 $w$;
- 如果使用,则这一次经过该边的代价变为 $1$。
特殊机会可以少用或不用,但总共最多只能使用 **3** 次,每次只能作用于当前经过的一条边。
现在,请你计算从点 $n$ 到点 $1$ 的最小总代价。若无法到达,则输出 $-1$。
输入格式
第一行包含三个整数 $n, m, X$,分别表示点数、边数和特殊点的位置。
接下来 $m$ 行,每行包含三个整数 $u, v, w$,表示一条连接点 $u$ 与点 $v$ 的无向边,其代价为 $w$。
输出格式
输出一个整数,表示从点 $n$ 到点 $1$ 的最小总代价。若无法到达,则输出 $-1$。
说明/提示
### 【样例说明】
由于 $X = 6$,而出发点也是 $6$,因此一开始就已经获得了 **3** 次特殊机会。
一种最优走法为:$6 \to 5 \to 4 \to 3 \to 1$,对应边的原代价分别为 $20, 10, 100, 2$。
在其中 **3** 条边上使用特殊机会,例如对代价为 $20, 10, 100$ 的三条边使用,则这三次经过的代价都变为 $1$,最后一条边仍支付原代价 $2$。
因此总代价为 $1 + 1 + 1 + 2 = 5$
### 【评测用例规模与约定】
对于 $30\%$ 的评测用例,$n, m \leq 500$。
另有额外 $30\%$ 的评测用例,所有边的代价 $w$ 相同。
对于所有的评测用例,$1 \leq n \leq 2 \times 10^5$,$1 \leq m \leq 2 \times 10^5$,$1 \leq w \leq 10^9$,$1 \leq X, u, v \leq n$。
保证图中不含自环,但可能存在重边。