QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 1024 MB 満点: 100

#13882. 逃脱

統計

Powder 正在 The Last Drop 中闲逛,这时她刚从 Vander 那里听说 The Last Drop 即将迎来又一次针对非法海克斯水晶(Hex Crystals)的“例行”搜查。她需要快速藏好她所有的海克斯水晶。然而,Powder 还在她的实验室里留了许多海克斯水晶。当皮尔特沃夫执法官(Piltover Enforcers)到达这里并发现她失踪时,他们肯定也会去搜查她的实验室。为了避免被发现,Powder 需要从 The Last Drop 出发前往她的实验室,并且必须在执法官到达之前严格提前到达,同时还要确保在途中避免与他们相遇。一旦到达实验室,她就可以立即拿走水晶并离开。隧道里非常黑暗,以至于 Powder 无法看到从前方走来的执法官。隧道也非常狭窄,如果他们的路径在同一时间发生交叠,即使他们只是在单点相遇,她也会被发现。

我们可以将隧道系统表示为一个无向图,其中 $n$ 个顶点代表路口,$m$ 条边代表隧道。Powder 目前位于 The Last Drop,对应顶点 $s$。Powder 的实验室位于顶点 $t$,而执法官目前位于顶点 $p$。在 Powder 开始移动的同一瞬间,执法官将开始直接前往 The Last Drop。Powder 假设执法官会选择某条最短路径前往那里,但她不知道具体是哪一条。一旦执法官到达 The Last Drop 并发现 Powder 不在,他们会立即前往 Powder 的实验室,同样会选择某条最短路径。如果执法官在 Powder 之前到达她的实验室(他们会在那里等她出现),或者如果她在同一时间与执法官处于图中的相同位置,Powder 就会被抓住。注意,Powder 只要与执法官保持任意小的正距离 $\epsilon$,就不会被抓住。Powder 假设自己的移动速度为 $0.5 \text{ m/s}$,而执法官的移动速度为 $1 \text{ m/s}$。虽然执法官总是会沿着前往目标的最短路径行进,但 Powder 的路线可以是任意的,包括进入一条隧道而不走完整个隧道,或者停下来等待任意长的时间。Powder 仅在一条路线无论执法官选择哪条路线都能成功时,才认为该路线是可行的。她是否有足够的时间到达实验室、拿走水晶并避开执法官?

如果 Powder 能够在执法官到达之前到达实验室并拿走水晶,输出她能做到这一点的最短时间。可以证明,对于某个整数 $k$,最短时间要么恰好是 $k$ 秒,要么 Powder 无法在 $k$ 秒内完成,但对于任意小的常数 $\epsilon > 0$,她可以在 $k + \epsilon$ 秒内完成。在这两种情况下,均输出 $k$。

如果 Powder 无法在不被抓住的情况下在执法官之前到达实验室,输出 $-1$。

输入格式

第一行包含五个整数 $n, m, s, t$ 和 $p$($1 \le n \le 10^5$,$1 \le m \le 2 \cdot 10^5$,$1 \le s, t, p \le n$),其中 $n$ 是路口数量,$m$ 是隧道数量,$s$ 是 The Last Drop 的位置,$t$ 是 Powder 实验室的位置,$p$ 是执法官出发的位置。$s, t$ 和 $p$ 两两不同。

接下来的 $m$ 行,每行包含三个整数 $u, v$ 和 $w$($1 \le u, v \le n$,$1 \le w \le 10^9$)。三元组 $(u, v, w)$ 描述了一条连接顶点 $u$ 和顶点 $v$ 且长度为 $w$ 米的隧道。隧道系统可能不是简单图(可能存在自环或重边)。

输出格式

如果 Powder 能够在执法官到达之前到达实验室并拿走水晶,输出她能做到这一点的最短时间(以秒为单位)。如果 Powder 无法在不被抓住的情况下在执法官之前到达实验室,输出 $-1$。

样例

输入样例 1

3 2 1 2 3
1 2 9
3 1 20

输出样例 1

18

输入样例 2

3 2 1 2 3
1 2 9
3 1 9

输出样例 2

-1

输入样例 3

5 4 1 4 5
1 2 200
2 3 1
2 4 100
4 5 400

输出样例 3

700

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.