리버
면접 대비시간 제한1초메모리 제한512 MB
각 사람이 다른 사람의 정체에 대해 한 진술이 주어질 때, 모든 진술과 맞는 외계인의 최소 수를 구합니다.
문제
시이가 연 하이퍼-스타게이트를 통해 외계인들이 지구를 침략하려고 한다. 외계인은 리버(파괴자)와 스캐럽(갑충탄) 중 하나이다. 이들은 인간 사회에 교묘하게 숨어들어 동호의 집을 날려버리려고 한다. 동호는 집을 지키기 위해 인간 사회에 숨어든 리버와 스캐럽의 수를 알아내려고 한다.
동호는 외계인으로 의심되는 사람 명에게 1번부터 번까지 번호를 붙이고, 각 사람에게 다른 사람의 정체를 들었다. 명 중에는 진짜 사람이 최소 한 명 있다.
번 사람은 번 사람의 정체를 알고 있으며, 번 사람이 진짜 사람이라고 답하거나 외계인이라고 말했다.
- 번 사람이 진짜 사람일 경우: 번 사람이 진짜 사람이면 진짜 사람이라고, 외계인이면 외계인이라고 주장한다.
- 번 사람이 리버일 경우: 번 사람은 항상 진짜 사람이며, 번 사람이 외계인이라고 주장한다.
- 번 사람이 스캐럽일 경우: 번 사람은 항상 외계인이며, 번 사람이 진짜 사람이라고 주장한다.
동호는 외계인의 수가 적기를 바란다. 주어진 답변과 모순되지 않는 외계인의 최소 수를 구하라.
입력
첫 번째 줄에 사람의 수 이 주어진다.
그다음 개 줄에는 1번 사람부터 번 사람까지 각 사람이 말한 다른 사람의 정체가 한 줄에 하나씩 순서대로 주어진다. 번째 줄에는 번 사람이 정체를 말한 사람의 번호 가 주어지고, 이어서 공백을 두고 번 사람이 외계인이라고 주장하면 1, 진짜 사람이라고 주장하면 0이 주어진다.
출력
첫 번째 줄에 명 중 외계인이 최소 몇 명인지 출력한다.