CF2014E Rendez-vous de Marian et Robin

题目描述

在谦卑的相会之举中,喜悦如盛开的花朵般绽放。 分别让心愈加思念。Marian 在市场卖出了最后一件商品的同时,Robin 在 Major Oak 完成了训练。他们迫不及待地想要见面,于是两人都毫不耽搁地出发了。 旅行网络由 $n$ 个顶点组成,编号为 $1$ 到 $n$,以及 $m$ 条边。第 $i$ 条边连接顶点 $u_i$ 和 $v_i$,需要 $w_i$ 秒才能通过(所有 $w_i$ 都是偶数)。Marian 从顶点 $1$(市场)出发,Robin 从顶点 $n$(Major Oak)出发。 此外,$n$ 个顶点中有 $h$ 个顶点各有一匹马。Marian 和 Robin 都会骑马,并且上马不需要时间(即 $0$ 秒)。骑马时,行进时间减半。一旦上马,马会持续到旅途结束。两人必须在顶点上相遇(即不能在边上相遇)。任意一方都可以选择在任意顶点等待。 请输出 Robin 和 Marian 最早可以相遇的时间。如果顶点 $1$ 和 $n$ 不连通,则输出 $-1$,表示相会取消。

输入格式

第一行输入一个整数 $t$($1 \leq t \leq 10^4$)——表示测试用例数量。 每个测试用例的第一行包含三个整数 $n$、$m$、$h$($2 \leq n \leq 2 \times 10^5,\, 1 \leq m \leq 2 \times 10^5,\, 1 \leq h \leq n$)——分别表示顶点数、边数和有马的顶点数。 每个测试用例的第二行包含 $h$ 个互不相同的整数 $a_1, a_2, \ldots, a_h$($1 \leq a_i \leq n$)——表示有马的顶点编号。 接下来 $m$ 行,每行三个整数 $u_i, v_i, w_i$($1 \leq u_i, v_i \leq n,\, 2 \leq w_i \leq 10^6$)——表示有一条边连接顶点 $u_i$ 和 $v_i$,不骑马通过该边需要 $w_i$ 秒。 没有自环和重边。所有 $w_i$ 都是偶数。 保证所有测试用例中 $n$ 和 $m$ 的总和不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,输出一个整数,表示 Robin 和 Marian 最早可以相遇的时间。如果他们无法相遇,输出 $-1$。

说明/提示

在第一个测试用例中,Marian 从顶点 $1$ 骑马到顶点 $2$,Robin 等待。 在第二个测试用例中,顶点 $1$ 和 $3$ 不连通。 在第三个测试用例中,Marian 和 Robin 都前往顶点 $2$ 相遇。 在第四个测试用例中,Marian 先步行到顶点 $2$,在 $2$ 上马后骑马到顶点 $3$ 与 Robin 相遇。 在第五个测试用例中,Marian 先步行到顶点 $2$,在 $2$ 上马后骑马返回顶点 $1$,再前往顶点 $3$,Robin 等待。 由 ChatGPT 4.1 翻译