Plan B

시간 제한2초메모리 제한512 MB

요약
어떤 도시에서 시위가 시작될 때 그 도시를 지나지 않고 모든 이웃에 군대를 보낼 수 없는 도시, 즉 위험 도시를 모두 찾는다.
난이도

보통10점 중 7점

유형
그래프, DFS, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

CrisisLand에서는 때때로 국가 안보를 심각하게 위협하는 위기가 발생한다. 최근 위기에서도 여러 도시에서 일련의 시민 시위가 일어났다. 시위는 한 도시에서 시작되어 다른 도시로 빠르게 번졌다. 이런 일이 다시 일어나지 않도록, 정부는 Plan B로 전국 인터넷을 차단한 뒤 시위가 시작된 도시를 신속히 병력으로 포위하기로 했다. 어떤 도시의 모든 인접 도시에 병력이 있으면 그 도시는 포위된 것이다. 정부는 b개의 서로 다른 도시에 군사 기지를 두고 있으며, 각 기지에는 모든 도시로 보낼 수 있는 많은 병력이 있다. 정부는 병력이 시위가 시작된 도시를 통과할 수 없다는 것을 알고 있다. 통과하면 병력이 죽을 수 있기 때문이다. 이 때문에 어떤 도시는 병력으로 포위하는 것이 불가능할 수 있다. 이런 도시를 critical이라고 한다. 어떤 도시에 군사 기지가 있으면 그 도시는 critical이 아니라고 가정한다. 이제 정부는 나라에 critical 도시가 있는지 알고 싶어 한다. 군단병 긱인 당신이 정부를 도와 답을 찾아라.

아, CrisisLand의 구조를 설명하는 것을 잊었다! 이 위기를 해결하려면 CrisisLand가 n개의 도시로 이루어져 있고 도시에는 1부터 n까지 번호가 붙어 있다는 점을 말해야 한다. 도시들은 양방향으로 통행할 수 있는 m개의 도로로 연결되어 있다. 두 도시 사이에 도로가 있으면 두 도시는 인접하다. CrisisLand의 도로망은 연결되어 있음이 보장된다.

입력

입력의 첫째 줄에는 도시, 도로, 군사 기지의 수를 나타내는 세 양의 정수 n, m, b가 주어진다 (1 ⩽ b ⩽ n ⩽ 100 000, 1 ⩽ m ⩽ 200 000). 다음 m개 줄에는 각각 도시 vi와 ui 사이의 도로를 나타내는 두 수 vi와 ui가 주어진다. 마지막 줄에는 군사 기지가 있는 도시 b개가 주어진다.

출력

출력은 두 줄로 이루어진다. 첫째 줄에는 critical 도시의 수를 출력한다. 둘째 줄에는 critical 도시를 오름차순으로 출력한다.

예제1

  1. 예제 1

    입력
    7 8 3
    1 2
    1 3
    1 4
    2 5
    2 6
    5 6
    3 4
    3 7
    4 5 6
    
    예상 출력
    1
    3