파티 농담 집합
시간 제한1초메모리 제한32 MB
페타르를 포함해 연결된 초대 집합 중 농담 유형이 서로 다르고 각 참석자 아래 모인 유형이 연속된 수가 되는 경우의 서로 다른 집합 개수를 구합니다.
문제
페타르는 생일 파티를 열면서 자기 회사 직원 가운데 몇 명을 초대하려고 한다. 페타르는 이 회사의 대표이고, 자기 파티이므로 항상 참석한다.
페타르를 포함한 직원 명에게는 1부터 까지 서로 다른 번호가 붙어 있고, 번 사람이 하는 농담의 종류는 이다. 페타르를 뺀 모든 직원에게는 직속 상사가 정확히 한 명씩 있다.
페타르는 대표라서 번호가 1이며, 모든 직원의 직접 상사이거나 간접 상사이다.
파티에 온 사람은 페타르까지 포함해 다음 규칙을 모두 지켜야 한다.
- 같은 종류의 농담을 하는 사람이 두 명 있으면 안 된다.
- 직속 상사가 초대받지 않은 사람은 초대할 수 없다.
- 가 직접 또는 간접으로 상사인 초대받은 사람들과 자신이 하는 농담의 종류를 모두 모았을 때 그 집합이 연속한 수의 집합이 아니면, 를 초대할 수 없다.
집합을 오름차순으로 정렬했을 때 이웃한 두 원소의 차이가 항상 1이면 연속한 수의 집합이다. 예를 들어 와 이 연속한 수의 집합이다.
페타르는 이 규칙을 지키면서 자기 파티에서 볼 수 있는 농담 종류의 집합이 몇 가지인지 알고 싶다.
입력
첫째 줄에 정수 이 주어진다. ()
둘째 줄에 개의 정수 이 주어진다. 는 번 사람이 하는 농담의 종류이다. ()
다음 개 줄에는 각각 두 정수 와 가 주어진다. 가 의 직속 상사라는 뜻이다. ()
출력
규칙을 모두 지키면서 파티에서 볼 수 있는 농담 종류의 집합이 몇 가지인지 첫째 줄에 출력한다.
힌트
첫 번째 예제에서 파티에 나올 수 있는 농담의 집합은 , , , , , 이다.
두 번째 예제에서 가능한 집합은 , , 뿐이다. 농담 6을 하는 사람은 파티에 올 수 없다. 그 사람이 오면 농담 집합 이 연속한 수의 집합이 아니기 때문이다.