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 翻译