P15787 [JAG 2025 Summer Camp #3] Flight Planning 2
题目描述
某个国家有 $N$ 个机场,Jag 航空集团运营着 $M$ 个连接这些机场的航班。为了减少所需的飞机数量,他们决定重新安排航班的执行顺序。
在每个航班中,一架飞机从一个机场起飞并抵达另一个机场,且每个航班必须由恰好一架飞机执飞。我们用 $a \rightarrow b$ 表示一个从机场 $a$ 起飞并抵达机场 $b$ 的航班。
一架飞机能够执飞航班 $x \rightarrow y$,当且仅当满足以下条件之一:
- 该飞机最初被放置在机场 $x$,且尚未执飞过任何航班。
- 该飞机最近一次执飞的航班的目的地是机场 $x$。
例如,假设有三个航班:$a \rightarrow b$、$c \rightarrow a$ 和 $b \rightarrow d$。如果将它们按顺序安排为 $c \rightarrow a$、$b \rightarrow d$、$a \rightarrow b$,那么 $c \rightarrow a$ 和 $a \rightarrow b$ 可以由同一架飞机执飞,因此这三个航班可以由两架飞机完成。
你可以任意重新排列这 $M$ 个航班的顺序,并任意选择飞机的初始放置位置。请问,要执飞所有航班,最少需要多少架飞机?
输入格式
输入包含多个测试用例。
第一行包含一个整数 $T$($1 \leq T \leq 1000$),表示测试用例的数量。
接下来是 $T$ 个测试用例。每个测试用例的格式如下。
$$\begin{aligned}
& N \ M \\
& a_{1} \ b_{1} \\
& \vdots \\
& a_{M} \ b_{M}
\end{aligned}$$
对于每个测试用例,第一行包含两个整数 $N$($2 \leq N \leq 300\,000$)和 $M$($1 \leq M \leq 300\,000$),分别表示机场的数量和航班的数量。
接下来的 $M$ 行,每行包含两个整数 $a_i$ 和 $b_i$,满足 $1 \leq a_i, b_i \leq N$ 且 $a_i \neq b_i$。每行描述第 $i$ 个航班 $a_i \rightarrow b_i$。
此外,所有测试用例的 $N$ 的总和不超过 $300\,000$,所有测试用例的 $M$ 的总和不超过 $300\,000$。
输出格式
对于 $T$ 个测试用例中的每一个,输出一行,表示所需的最少飞机数量。
说明/提示
翻译由 DeepSeek V3.2 完成