QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 1024 MB Points totaux : 100

#6391. 飞机

Statistiques

兔子 Benson 想要驾驶飞机!

Benson 可以在 $n$ 个区域中飞行,区域编号为 $1$ 到 $n$。对于每个区域 $i$,由于地形限制,Benson 在该区域内飞行时必须保持至少 $a[i]$ 的高度。

此外,由于盛行风条件以及 Benson 缺乏飞行经验(毕竟他是一只兔子),他只能在特定的区域对之间飞行。共有 $m$ 对这样的区域,编号为 $1$ 到 $m$。第 $j$ 对区域 $u[j]$ 和 $v[j]$ 表示 Benson 可以在区域 $u[j]$ 和 $v[j]$ 之间双向飞行。保证仅使用这些允许的路径,总是可以从任意区域到达所有其他区域。

最初,Benson 位于区域 $1$,高度为 $0$。他想要前往区域 $n$,并且为了着陆,他必须在高度 $0$ 时结束行程。

在每一分钟内,Benson 可以选择留在当前区域或前往另一个区域。在同一分钟内,他的高度可以增加 $1$、减少 $1$ 或保持不变。然而,当 Benson 到达一个区域时,他的高度必须至少达到该区域要求的最低高度。Benson 到达区域 $n$ 并着陆所需的最短时间是多少?

输入格式

程序必须从标准输入读取数据。

第一行包含两个空格分隔的整数 $n$ 和 $m$,分别表示区域的数量和 Benson 可以飞行的区域对的数量。

下一行包含 $n$ 个空格分隔的整数 $a[1], a[2], \dots, a[n]$,表示每个区域要求的最低高度。

接下来的 $m$ 行,每行包含两个空格分隔的整数。第 $j$ 行包含 $u[j]$ 和 $v[j]$,表示 Benson 可以在区域 $u[j]$ 和 $v[j]$ 之间双向飞行。

输出格式

程序必须打印到标准输出。

输出应包含一个整数,表示在区域 $n$ 着陆所需的最短时间。

子任务

对于所有测试用例,输入满足以下范围:

  • $1 \le n \le 200\,000$
  • $1 \le m \le 400\,000$
  • $0 \le a[i] \le 10^8$
  • $a[1] = a[n] = 0$
  • $1 \le u[j], v[j] \le n, u[j] \neq v[j]$

你的程序将在满足以下限制的输入实例上进行测试:

子任务 分值 附加限制
1 22 $m = n - 1, u[j] = j, v[j] = j + 1$
2 10 $n \le 2000, m \le 4000, a[i] \le 2000$
3 31 $n \le 2000, m \le 4000$
4 37 无附加限制

样例

样例输入 1

3 2
0 2 0
1 2
2 3

样例输出 1

4

说明 1

Benson 正从区域 $1$ 前往区域 $3$。他可以在 $4$ 分钟内完成。

  • 第 $1$ 分钟,Benson 留在区域 $1$。他将高度从 $0$ 增加到 $1$。
  • 第 $2$ 分钟,Benson 从区域 $1$ 飞往区域 $2$。他将高度从 $1$ 增加到 $2$。
  • 第 $3$ 分钟,Benson 从区域 $2$ 飞往区域 $3$。他将高度从 $2$ 减少到 $1$。
  • 第 $4$ 分钟,Benson 留在区域 $3$。他将高度从 $1$ 减少到 $0$。

样例输入 2

11 12
0 0 0 0 0 0 2 2 1 5 0
1 2
2 3
3 4
4 5
5 6
6 11
1 7
7 8
8 9
9 11
1 10
10 11

样例输出 2

5

说明 2

Benson 正从区域 $1$ 前往区域 $11$。他可以在 $5$ 分钟内完成。

  • 第 $1$ 分钟,Benson 留在区域 $1$。他将高度从 $0$ 增加到 $1$。
  • 第 $2$ 分钟,Benson 从区域 $1$ 飞往区域 $7$。他将高度从 $1$ 增加到 $2$。
  • 第 $3$ 分钟,Benson 从区域 $7$ 飞往区域 $8$。他保持高度为 $2$。
  • 第 $4$ 分钟,Benson 从区域 $8$ 飞往区域 $9$。他将高度从 $2$ 减少到 $1$。
  • 第 $5$ 分钟,Benson 从区域 $9$ 飞往区域 $11$。他将高度从 $1$ 减少到 $0$。

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.