#P2553. The Bottom of a Graph

The Bottom of a Graph

题目描述

我们将使用图论中的以下标准定义。设 VV 是一个非空有限集合,其元素称为顶点(或节点)。设 EE 是笛卡尔积 V×VV \times V 的一个子集,其元素称为边。那么 G=(V,E)G=(V,E) 称为有向图。

nn 是一个正整数,p=(e1,...,en)p=(e_1,...,e_n) 是一个长度为 nn 的边序列,其中 eiEe_i \in Eei=(vi,vi+1)e_i=(v_i,v_{i+1}) 对应一个顶点序列 (v1,...,vn+1)(v_1,...,v_{n+1})。那么 pp 称为从顶点 v1v_1 到顶点 vn+1v_{n+1} 的路径,并且我们说 vn+1v_{n+1} 是从 v1v_1 可达的,记作 (v1vn+1)(v_1 \to v_{n+1})

以下是一些新定义。图 G=(V,E)G=(V,E) 中的一个节点 vv 称为汇点,如果对于 GG 中每一个从 vv 可达的节点 wwvv 也可以从 ww 可达。图的底部是所有汇点的子集,即 $\text{bottom}(G)=\{v \in V \mid \forall w \in V: (v \to w) \Rightarrow (w \to v)\}$。你需要计算某些图的底部。

输入格式

输入包含多个测试用例,每个测试用例对应一个有向图 GG。每个测试用例以一个整数 vv 开始,表示图 G=(V,E)G=(V,E) 的顶点数,顶点由集合 V={1,...,v}V=\{1,...,v\} 中的整数标识。假设 1v50001 \leq v \leq 5000。接下来是一个非负整数 ee,然后是 ee 对顶点标识符 v1,w1,...,ve,wev_1,w_1,...,v_e,w_e,表示 (vi,wi)E(v_i,w_i) \in E。这些指定的边之外没有其他边。最后一个测试用例后跟一个00

输出格式

对于每个测试用例,在一行中输出指定图的底部。为此,按升序打印所有汇点的编号,用单个空格分隔。如果底部为空,则输出一个空行。

输入样例 1

3 3
1 3 2 3 3 1
2 1
1 2
0

输出样例 1

1 3
2

来源

乌尔姆20032003年地区赛(试题来源)