#P15787. [JAG 2025 Summer Camp #3] Flight Planning 2

[JAG 2025 Summer Camp #3] Flight Planning 2

说明

某个国家有 NN 个机场,Jag 航空集团运营着 MM 个连接这些机场的航班。为了减少所需的飞机数量,他们决定重新安排航班的执行顺序。

在每个航班中,一架飞机从一个机场起飞并抵达另一个机场,且每个航班必须由恰好一架飞机执飞。我们用 aba \rightarrow b 表示一个从机场 aa 起飞并抵达机场 bb 的航班。

一架飞机能够执飞航班 xyx \rightarrow y,当且仅当满足以下条件之一:

  • 该飞机最初被放置在机场 xx,且尚未执飞过任何航班。
  • 该飞机最近一次执飞的航班的目的地是机场 xx

例如,假设有三个航班:aba \rightarrow bcac \rightarrow abdb \rightarrow d。如果将它们按顺序安排为 cac \rightarrow abdb \rightarrow daba \rightarrow b,那么 cac \rightarrow aaba \rightarrow b 可以由同一架飞机执飞,因此这三个航班可以由两架飞机完成。

你可以任意重新排列这 MM 个航班的顺序,并任意选择飞机的初始放置位置。请问,要执飞所有航班,最少需要多少架飞机?

输入格式

输入包含多个测试用例。

第一行包含一个整数 TT1T10001 \leq T \leq 1000),表示测试用例的数量。

接下来是 TT 个测试用例。每个测试用例的格式如下。

$$\begin{aligned} & N \ M \\ & a_{1} \ b_{1} \\ & \vdots \\ & a_{M} \ b_{M} \end{aligned}$$

对于每个测试用例,第一行包含两个整数 NN2N3000002 \leq N \leq 300\,000)和 MM1M3000001 \leq M \leq 300\,000),分别表示机场的数量和航班的数量。

接下来的 MM 行,每行包含两个整数 aia_ibib_i,满足 1ai,biN1 \leq a_i, b_i \leq Naibia_i \neq b_i。每行描述第 ii 个航班 aibia_i \rightarrow b_i

此外,所有测试用例的 NN 的总和不超过 300000300\,000,所有测试用例的 MM 的总和不超过 300000300\,000

输出格式

对于 TT 个测试用例中的每一个,输出一行,表示所需的最少飞机数量。

2
5 3
2 3
5 4
1 2
5 6
2 3
3 5
5 1
4 2
2 3
1 4
2
1

提示

翻译由 DeepSeek V3.2 完成