첩보 확산

방향성 연락 그래프와 적 스파이 집합이 주어질 때, 모든 아군 스파이가 메시지를 받고 적 스파이는 받지 않도록 직접 메시지를 보내야 하는 최소 횟수를 구한다.

보통7그래프DFS동적 계획법그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

당신은 선량 요원 보호 센터(BAPC) 소속 스파이이고, 최근 일급 기밀 문서를 손에 넣었다. 이 소식을 조직의 동료 스파이 전원에게 알리려고 한다. 한 명씩 직접 비밀 메시지를 보낼 수도 있지만 시간이 너무 오래 걸린다. 다행히 다른 스파이도 각자 연락망이 있어서 메시지를 대신 퍼뜨려 준다.

문제는 연락망에 적 조직의 스파이가 섞여 있다는 점이다. 이들은 메시지를 받으면 곧바로 적 조직에 넘긴다. 그래서 적 스파이에게는 메시지가 절대 닿으면 안 된다. 다행히 누가 배신자인지 당신은 알고 있으므로 그들을 피할 수 있다.

메시지를 보내는 방법은 두 가지다. 비밀 메시지를 받은 스파이는 내용이 기밀임을 알고 다른 누구에게도 말하지 않는다. 공개 메시지를 받은 스파이는 자신이 연락할 수 있는 모든 스파이에게 그 내용을 알린다. 그 스파이 역시 기밀로 여기지 않으므로 자신이 연락할 수 있는 모든 스파이에게 다시 알리고, 이 전달은 계속 이어진다. 전에 같은 메시지를 받은 적이 있는 스파이도 다시 받으면 똑같이 퍼뜨린다. 누가 적 스파이인지 드러나면 안 되므로, 특정 연락처만 빼고 알리라고 지시할 수는 없다.

적 스파이가 한 명이라도 메시지를 받으면 실패다. 반대로 적이 아닌 스파이는 모두 메시지를 받아야 한다. 두 조건을 지키면서 당신이 직접 메시지를 보내는 스파이 수를 최소로 하려고 한다. 몇 명에게 보내야 하는가?

입력

첫 줄에 세 정수 SS, EE, CC가 주어진다. SS (1S500001 \le S \le 50000)는 연락망에 있는 스파이의 수이며 당신은 포함하지 않는다. EE (0ES0 \le E \le S)는 적 스파이의 수, CC (0C1000000 \le C \le 100000)는 스파이 사이 연결의 수이다.

다음 CC개 줄에는 두 정수 S1S_1, S2S_2 (0S1<S0 \le S_1 < S, 0S2<S0 \le S_2 < S)가 주어진다. 스파이 S1S_1이 스파이 S2S_2에게 연락할 수 있다는 뜻이고, 연결은 한쪽 방향으로만 성립한다. 같은 연결이 여러 번 주어질 수 있고 S1=S2S_1 = S_2일 수도 있다.

마지막 줄에는 적 스파이의 번호 EE개가 공백으로 구분되어 주어진다. E=0E = 0이면 이 줄은 비어 있거나 아예 없을 수 있다.

당신은 연락망의 모든 스파이에게 직접 메시지를 보낼 수 있다.

출력

다른 스파이에게 보내야 하는 메시지 수의 최솟값을 한 줄에 출력한다. 비밀 메시지와 공개 메시지를 모두 센다.