C1267 [JSOI2013]侦探jyy

内存限制:256 MB 时间限制:1000 ms

题目描述

JSOI 的世界里一共有 $N$ 个不同的事件(依次由 $1$ 到 $N$ 编号),以及 $M$ 条线索。

每一条线索对应一个二元组 $(x,y)$,表示事件 $x$ 发生会导致事件 $y$ 发生——注意: 线索是单向的,也就是如果 $y$ 发生了,并不代表 $x$ 一定会发生。

线索是有传递性的,即如果存在线索 $(x,y)$ 以及 $(y,z)$, 那么 $x$ 发生则会导致 $z$ 发生。

同时由于世界是合理的,任意一个事件 $x$ 一定不会通过某些线索导致事件 $x$ 本身发生。

另外,整个世界仅包含这 $M$ 条线索,我们不认为一些事件会凭空发生(就像福尔摩斯永远不会认为诡异的凶杀案是源于神的谴责)。具体而言: 对于某个事件 $x$, 如果 $x$ 发生了,并且存在某个事件可能导致 $x$ 发生,那么一定至少有一个可能导致 $x$ 发生的事件发生了。

现在已知世界上的 $M$ 条线索,以及 $D$ 个已经发生的事件,那么由此推断,哪些事件一定已经发生了呢?

输入格式

第一行包含用空格隔开的三个整数,分别为 $N$,$M$ 和 $D$。

接下来 $M$ 行,每行两个整数 $x$,$y$ 表示线索 $(x,y)$,满足 $1 \le x, y \le N$。

接下来 $D$ 行为 $D$ 个 $1$ 到 $N$ 之间不同的整数, 表示已知的已经发生的事件。

$1 \le D \le N \le 1000,1 \le M \le 100000$

输出

包含一行至少 $D$ 个由空格隔开的严格递增的正整数, 表示根据 $M$ 条线索以及 $D$ 个已知事件 JYY 所能推断出的一定发生了的事件。

样例

样例输入 1

3 2 1 1 3 2 3 3

样例输出 1

3

提示