AT_pakencamp_2022_day2_a Venues
题目描述
パ研王国由 $N$ 个城市和连接它们的 $M$ 条道路组成。城市按照海拔从高到低依次编号为 $1, 2, \ldots, N$,所有道路都是单向的,只能从海拔较高的城市通向海拔较低的城市。具体来说,第 $i$ 条道路可以从城市 $A_i$ 单向到达城市 $B_i$($A_i < B_i$)。
现在,今年的パ研训练营即将举行。为了举办训练营,需要在一些城市设立会场,并且要使得从パ研王国的任意一个城市出发,通过 $0$ 条或多条道路,均能到达设有会场的城市。
但是由于预算有限,希望设立会场的城市数量尽可能少。请确定满足条件的一组设有会场的城市集合。
输入格式
输入为如下形式,从标准输入读入。
> $N$ $M$ $A_1$ $B_1$ $A_2$ $B_2$ $\vdots$ $A_M$ $B_M$
输出格式
第 $1$ 行输出设立会场的城市的个数。这个数字应为在满足条件下会场最少的城市数量。
第 $2$ 行请输出设立会场的城市编号,按升序用空格隔开。
说明/提示
### 样例解释 1
对于本样例输出,任意一个城市都能通过如下方式到达某个有会场的城市:
- 从城市 $1$ 可到城市 $3, 4$
- 从城市 $2$ 可到城市 $4$
- 从城市 $3$ 可到城市 $3$
- 从城市 $4$ 可到城市 $4$
另外,只在 $1$ 个及以下城市设立会场,则无法满足所有城市均可到达会场,因此该输出满足要求。
### 约束条件
- 输入均为整数
- $1 \leq N \leq 10^5$
- $0 \leq M \leq 2 \times 10^5$
- $1 \leq A_i < B_i \leq N$ $(1 \leq i \leq M)$
由 ChatGPT 5 翻译