#P15194. [SWERC 2019] Bird Watching
[SWERC 2019] Bird Watching
说明
Kiara 正在研究一种行为方式非常奇特的鸟类。它们的移动最好用图的语言来解释:存在一个有向图 ,其节点是树木,只有当 是 的一条边时,鸟才能从一棵树 飞到另一棵树 。
Kiara 并不知道控制这些鸟类飞行的真实图 ,但在她之前的实地研究中,Kiara 收集了许多鸟类旅程的数据。利用这些数据,她构建了一个图 来解释它们是如何移动的。Kiara 花了大量时间观察它们,因此她确信,如果一只鸟可以直接从 飞到 ,那么她至少目击过一次这样的飞行。然而,有可能一只鸟的飞行路径是 到 再到 ,但她只目击了停靠点 和 ,于是将 添加到了 中。也可能是一只鸟的飞行路径是 到 到 再到 ,而她只目击了 和 ,于是将 添加到了 中,等等。总而言之,她知道 包含了 的所有边,并且 可能还包含一些其他的边 ,这些边在 中存在一条从 到 的路径(注意, 可能并不包含所有这样的边)。
对于下一次实地研究,Kiara 决定将基地安置在一棵给定的树 旁边。为了预警鸟类到达 ,她还希望在鸟类可能飞来的树木(即满足 是 中一条边的那些树 )上安装探测器。由于探测器价格不菲,她只希望在那些她确信 属于 的树 上安装探测器。
Kiara 确信一条边 属于 ,当且仅当 是 的一条边,并且所有在 中从 开始、在 结束的路径都使用了边 。Kiara 请你计算集合 ,即所有她确信 是 的一条边的树 。
输入格式
输入描述图 。第一行包含三个空格分隔的整数 , , 和 : 是 的节点数, 是 的边数, 是 Kiara 将要安置基地的树所对应的节点。
接下来的 行描述图 的边。每行包含两个空格分隔的整数 和 ( 且 ),表示 。保证同一对 不会出现两次。
输出格式
你的输出应描述集合 。第一行应包含一个整数 ,即 中的节点数,接下来是 行,每行包含 的一个不同元素。 的元素应按升序打印,每行一个元素。
3 3 2
0 1
0 2
1 2
1
1
6 8 2
0 1
0 2
1 2
2 0
2 3
3 4
4 2
2 5
2
1
4
提示
样例解释 1
此示例对应的图如右图所示。节点 属于 ,因为(唯一)从 到 的路径使用了 。节点 不属于 ,因为路径 没有使用边 。
:::align{center}
:::
样例解释 2
此示例对应的图如右图所示。出于与样例 1 相同的原因,节点 不属于 ,而 属于。节点 和 不属于 ,因为我们没有边 或 。最后, 属于 ,因为所有从 到 的路径都使用了边 。
:::align{center}
:::
数据范围
- ;
- 。
翻译由 DeepSeek 完成
京公网安备 11011102002149号