#P5954. [JSOI2013] 侦探 JYY
[JSOI2013] 侦探 JYY
题目描述
JSOI 的世界里一共有 个不同的事件(依次由 到 编号),以及 条线索。每一条线索对应一个二元组 ,表示事件 发生会导致事件 发生。
注意: 线索是单向的,也就是如果 发生了,并不代表 一定会发生。
线索是有传递性的, 即如果存在线索 以及 , 那么 发生则会导致 发生。
同时由于世界是合理的,任意一个事件 一定不会通过某些线索导致事件 本身发生。
另外,整个世界仅包含这 条线索, 我们不认为一些事件会凭空发生(就像福尔摩斯永远不会认为诡异的凶杀案是源于神的谴责)。具体而言,对于某个事件 , 如果 发生了,并且存在某个事件可能导致 发生,那么一定至少有一个可能导致 发生的事件发生了。
现在已知世界上的 条线索,以及 个已经发生的事件,那么由此推断, 哪些事件一定已经发生了呢?
输入格式
第一行包含用空格隔开的三个整数,分别为 , 和 。
接下来 行,每行两个整数 , 表示线索 , 满足 。
接下来 行为 个 到 之间不同的整数, 表示已知的已经发生的事件。
输出格式
包含一行至少 个由空格隔开的严格递增的正整数, 表示根据 条线索以及 个已知事件 JYY 所能推断出的一定发生了的事件。
3 2 1
1 3
2 3
3
3
4 4 1
1 2
1 3
2 4
3 4
4
1 2 3 4
提示
样例解释
在第一个样例中,由于事件 和事件 这两个事件中的任何一个发生都会导致事件 发生,所以我们并不能确定到底哪个事件发生了。
在第二个样例中,由于事件 发生了,所以事件 和事件 中至少有一个发生了。而不论哪一个发生了,都可以推出事件 发生了。
最终由于事件 发生了,使得我们可以推断出,所有 个事件都必然发生了。
数据范围
对于 的数据,。