A6176 | Rendez-vous de Marian et Robin
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
在谦卑的相会之举中,喜悦如盛开的花朵般绽放。
分别让心愈加思念。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$,表示相会取消。
分别让心愈加思念。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$。
每个测试用例的第一行包含三个整数 $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$。
输入输出样例
输入 #1
6 2 1 1 1 1 2 10 3 1 2 2 3 1 2 10 3 3 1 2 1 2 4 1 3 10 2 3 6 4 3 2 2 3 1 2 10 2 3 18 3 4 16 3 2 1 2 1 2 4 1 3 16 7 7 1 3 1 5 2 2 6 12 1 2 12 6 4 8 7 3 4 6 3 4 7 6 4
输出 #1
5 -1 6 19 14 12
**样例说明**
在第一个测试用例中,Marian 从顶点 $1$ 骑马到顶点 $2$,Robin 等待。
在第二个测试用例中,顶点 $1$ 和 $3$ 不连通。
在第三个测试用例中,Marian 和 Robin 都前往顶点 $2$ 相遇。
在第四个测试用例中,Marian 先步行到顶点 $2$,在 $2$ 上马后骑马到顶点 $3$ 与 Robin 相遇。
在第五个测试用例中,Marian 先步行到顶点 $2$,在 $2$ 上马后骑马返回顶点 $1$,再前往顶点 $3$,Robin 等待。
在第一个测试用例中,Marian 从顶点 $1$ 骑马到顶点 $2$,Robin 等待。
在第二个测试用例中,顶点 $1$ 和 $3$ 不连通。
在第三个测试用例中,Marian 和 Robin 都前往顶点 $2$ 相遇。
在第四个测试用例中,Marian 先步行到顶点 $2$,在 $2$ 上马后骑马到顶点 $3$ 与 Robin 相遇。
在第五个测试用例中,Marian 先步行到顶点 $2$,在 $2$ 上马后骑马返回顶点 $1$,再前往顶点 $3$,Robin 等待。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?