QOJ.ac

QOJ

実行時間制限: 2.0 s メモリ制限: 512 MB 満点: 100 ハック可能 ✓

#9260. 莱夫艾森银行物流

統計

Raiffeisenbank 的一项重要业务任务是改进在银行、客户、取货点和其他地点之间运送卡片、贵重物品、文件等的过程。你参与了一个试点项目,计划通过使用无人机和最优路径算法来彻底改变物流世界。

你现在正在一个由 $n$ 个着陆点组成的现场训练场进行首次测试。无人机位于 1 号点,需要飞往 $n$ 号点。无人机的遥控器可以运行 $m$ 个路由程序,第 $i$ 个程序能够将无人机从 $u_i$ 点移动到 $v_i$ 点(如果无人机不在 $u_i$ 点,程序将不执行任何操作),并且它是使用第 $t_i$ 版本的无人机控制库编写的。由于这是你项目的首次测试之一,你不确定不同软件版本之间的兼容性,因此你运行的每个路由程序(除了第一个)的无人机控制库版本必须严格大于前一个程序。

在查看了路由程序的代码后,你发现可以对其进行微小的修改。具体来说,你可以选取任何程序 $i$ 并交换其起点和终点。因此,如果第 $i$ 个程序原本将无人机从 $u_i$ 点移动到 $v_i$ 点,修改后它将从 $v_i$ 点移动到 $u_i$ 点。库版本 $t_i$ 保持不变。

现在你想知道,为了使存在一个程序序列 $p_1, p_2, \dots, p_k$,按此顺序运行可以将无人机从 1 号点移动到 $n$ 号点,且满足 $t_{p_1} < t_{p_2} < t_{p_3} < \dots < t_{p_k}$,你需要修改的最少程序数量是多少。

输入格式

输入的第一行包含一个整数 $t$ ($1 \le t \le 1000$),表示测试用例的数量。接下来是 $t$ 个测试用例的描述。

每个测试用例的第一行包含两个整数 $n$ 和 $m$ ($2 \le n \le 500\,000, 1 \le m \le 500\,000$),分别表示训练场上的着陆点数量和路由程序数量。

接下来 $m$ 行,第 $i$ 行描述第 $i$ 个程序,包含三个整数 $u_i, v_i$ 和 $t_i$ ($1 \le u_i, v_i \le n, 1 \le t_i \le 10^9$),表示该程序将无人机从 $u_i$ 点移动到 $v_i$ 点,并使用第 $t_i$ 版本的无人机控制库。

可能存在多个使用相同软件版本的程序。可能存在连接同一对点(在每个方向上)的多个程序。可能存在将无人机从某一点移动到其自身的程序。

保证所有测试用例中 $n$ 的总和不超过 $500\,000$。保证所有测试用例中 $m$ 的总和不超过 $500\,000$。

输出格式

如果无法通过修改程序来满足“每个后续运行的程序必须具有更大的无人机控制库版本”这一条件,从而将无人机从 1 号点移动到 $n$ 号点,则在输出的唯一一行中打印 -1。

否则,打印实现该目标所需修改的最少程序数量。

样例

样例输入 1

1
4 3
2 1 1
2 3 2
4 3 3

样例输出 1

2

样例输入 2

2
4 3
2 1 1
2 3 2
4 3 2
8 9
1 2 5
2 3 10
4 3 15
4 5 20
5 8 25
1 6 2
6 5 30
7 6 3
8 7 4

样例输出 2

-1
1

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.