路径翻转
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
路径翻转
题目描述
给定一个包含 个顶点和 条边的有向图。第 条边()从顶点 指向顶点 。
初始时,你位于顶点 ,需要通过重复以下两种操作到达顶点 ,请计算所需的最小总成本:
- 移动操作:从当前顶点沿边移动到相邻顶点,成本为 。具体来说,设当前顶点为 ,选择一条从 指向 的边,移动到顶点 。
- 翻转操作:反转所有边的方向,成本为 。具体来说,操作前所有从 到 的边,操作后将变为从 到 的边,反之亦然。
题目保证存在从顶点 到顶点 的操作序列。
输入格式
第一行输入三个整数 、、; 接下来 行,每行输入两个整数 、,表示第 条有向边从 指向 。
输出格式
输出到达顶点 的最小总成本。
样例
样例输入 1
5 6 5
1 2
2 4
3 1
3 5
4 3
5 2
样例输出 1
4
样例解释 1
通过以下操作序列达成目标,总成本为 :
- 花费 从顶点 移动到顶点 ;
- 花费 从顶点 移动到顶点 ;
- 花费 从顶点 移动到顶点 ;
- 花费 从顶点 移动到顶点 。
不存在总成本为 或更小的方案,因此输出 。
样例输入 2
5 6 1
1 2
2 4
3 1
3 5
4 3
5 2
样例输出 2
3
样例解释 2
通过以下操作序列达成目标,总成本为 :
- 花费 从顶点 移动到顶点 ;
- 花费 执行翻转操作,反转所有边的方向;
- 花费 从顶点 移动到顶点 。
不存在总成本为 或更小的方案,因此输出 。
样例输入 3
8 7 613566756
2 1
2 3
4 3
4 5
6 5
6 7
8 7
样例输出 3
4294967299
样例解释 3
答案可能超过 32 位整数范围,需注意使用 64 位整数类型(如 C++ 的 long long)处理。
样例输入 4
20 13 5
1 3
14 18
18 17
12 19
3 5
4 6
13 9
8 5
14 2
20 18
8 14
4 9
14 8
样例输出 4
21
数据范围
- ()
- 所有输入值均为整数
- 保证存在从顶点 到顶点 的操作序列
子任务
| 子任务编号 | 分值 | 约束条件 | 特殊性质 | 子任务依赖 |
|---|---|---|---|---|
| , | 无 | 无 | ||
| , | ||||
| , | 无 | |||
| , | ||||
| 无 | ||||
| , | ||||
| , | 无 |