시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
안녕 친구들? 내 이름은 홍즈, 세계에서 제일 유명한 탐정이지. 요즘 가는 곳마다 살인 사건이 끊이질 않아 고민이야(웃음). 어쨌든 오늘도 나는 사건을 쫓고 있어. 돈을 벌어야 하니까.
탐정 생활로 얻은 경험 덕분에, 나는 사건들 사이의 인과관계를 간단히 정리할 수 있게 됐어. 예를 들어 사건 A가 일어나면 반드시 사건 B도 일어난다는 걸 알 때, 이 관계를 A → B로 나타내자. 이런 관계는 A → B → C처럼 이어질 수 있지만, A → B → C → … → A 처럼 순환하는 경우는 절대 없어.
또 한 가지. 어떤 사건 C를 직접 일으킬 수 있는 관계가 A → C와 B → C뿐이라고 하자. 이때 사건 C가 실제로 일어났다면, 사건 A와 B 중 적어도 하나는 반드시 함께 일어났다는 뜻이야. 즉, 일어난 사건에는 그 사건을 가리키는 원인 사건 중 적어도 하나가 반드시 함께 일어나 있어야 해. 단, 자신을 가리키는 관계가 하나도 없는 사건은 스스로 일어날 수 있어.
오늘도 사건이 일어났군. 증거를 모아 보니 총 N개의 사건이 확실히 일어났다는 걸 알아냈어. 그런데 이 정보만으로도, 규칙에 따라 반드시 함께 일어났을 다른 사건들이 더 있다는 사실을 추리할 수 있지. 지성과 경험을 모두 갖춘 나라면 말이야. 너도 알아낼 수 있겠어?
확실히 일어난 N개의 사건이 주어졌을 때, 위 규칙에 따라 반드시 일어났어야 하는 모든 사건을 찾아라.
첫째 줄에 일어날 수 있는 사건의 개수 D (1 ≤ D ≤ 1000), 사건들 사이 관계의 개수 M (1 ≤ M ≤ 100000), 확실히 일어난 사건의 개수 N (1 ≤ N ≤ D)이 공백으로 구분되어 주어진다.
다음 M개의 줄에는 각각 두 정수 A와 B (1 ≤ A, B ≤ D)가 주어지며, 이는 A → B 관계, 즉 사건 A가 일어나면 반드시 사건 B도 일어남을 뜻한다. 이 관계들로 이루어진 그래프에는 순환이 없다.
다음 N개의 줄에는 각각 확실히 일어난 사건의 번호 X (1 ≤ X ≤ D)가 주어진다.
규칙에 따라 반드시 일어났어야 하는 모든 사건의 번호를 오름차순으로 정렬하여 한 줄에 공백으로 구분해 출력한다.