배신자

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

정보원에 따르면 ACM 보안국(ASA) 안에 배신자가 한 명 있다. ASA는 계층 구조를 이룬다. 요원에게는 각자 상관이 한 명 있고, 아무에게도 관리받지 않는 최고 관리자가 한 명 이상 있다. 정보원은 배신자가 누구인지 정확히 알지 못하지만 용의자 명단은 가지고 있다. 그래서 우리가 아는 사실은 배신자가 정확히 한 명이라는 것과 이 용의자 명단뿐이다. 배신자를 찾으려고 용의자마다 감시자를 한 명 붙이려 한다. 배정은 다음 세 조건을 지켜야 한다.

  1. 두 용의자가 서로를 감시할 수는 없다. 요원 xx가 요원 yy를 감시하면서 yy가 다시 xx를 감시하는 배정은 금지된다.
  2. 용의자는 자신의 상관이나 자신의 직속 부하 중 한 명에게 감시받아야 한다.
  3. 누구도 용의자를 두 명 이상 감시할 수 없다.

세 조건을 모두 지키면 용의자 전원을 감시하지 못할 수도 있다. ASA의 조직 구조와 용의자 명단을 입력으로 받아 감시자를 배정할 수 있는 용의자의 최대 수를 구하는 프로그램을 작성하라.

다음 그림은 최고 관리자가 두 명이고 요원이 열한 명인 ASA의 조직 구조이며, 용의자는 회색으로 칠했다. 이 경우 화살표처럼 용의자 여덟 명 중 일곱 명에게 감시자를 붙일 수 있다. 요원 xx에서 요원 yy로 가는 화살표는 xxyy를 감시한다는 뜻이다. 이 예에서는 용의자 전원을 감시하는 배정이 존재하지 않음을 보일 수 있다.

ASA 조직 구조와 감시자 배정 예시

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 요원 수 nn (1n100001 \le n \le 10\,000)과 용의자 수 kk (1kn1 \le k \le n)가 주어진다. 요원은 1번부터 nn번까지 번호가 붙어 있다. 둘째 줄에는 nn개의 정수가 공백으로 구분되어 주어진다. ii번째 수는 요원 ii의 상관 번호이고, 0은 요원 ii가 최고 관리자라는 뜻이다. 셋째 줄에는 용의자의 번호 s1,s2,,sks_1, s_2, \ldots, s_k가 주어진다. 입력의 마지막 줄은 0 0이며, 이 줄은 처리하지 않는다.

출력

테스트 케이스마다 감시자를 배정할 수 있는 용의자의 최대 수를 한 줄에 출력한다.