QOJ.ac

QOJ

时间限制: 1.5 s 内存限制: 256 MB 总分: 100 可 Hack ✓

#14432. 循环拓扑排序

统计

给你一个拥有 $n$ 个顶点和 $m$ 条边的有向图。你的任务是寻找由 $1$ 到 $n$ 之间的互不相同的整数组成的最长序列 $a$ 的长度,使得满足以下条件:

  • 设 $l$ 为 $a$ 的长度。那么对于所有整数 $i \in [2, l]$ 以及所有满足存在边 $(v, a_i)$ 的顶点 $v$,都存在一个索引 $j < i$ 使得 $a_j = v$。

输入格式

第一行包含 $2$ 个整数 $n, m$ ($2 \le n \le 3 \cdot 10^5, 0 \le m \le 3 \cdot 10^5$) —— 图的顶点数和边数。

接下来的 $m$ 行,每行包含一对整数 $u_i, v_i$ ($1 \le u_i, v_i \le n$) —— 图的有向边。图中允许存在自环和重边。

输出格式

在第一行输出正确序列的最大长度 $l$。

样例

输入样例 1

5 0

输出样例 1

5

输入样例 2

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

输出样例 2

5

输入样例 3

3 3
1 1
2 2
3 3

输出样例 3

1

说明

在第一个样例中,一个合法的序列可以是 $\{1, 2, 3, 4, 5\}$。

在第二个样例中,一个合法的序列可以是 $\{3, 5, 1, 2, 4\}$。

在第三个样例中,一个合法的序列可以是 $\{1\}$。序列 $\{2\}$ 和 $\{3\}$ 也满足题目的条件。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#370EditorialOpen题解jiangly2025-12-14 07:26:51View

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.