만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

리버

면접 대비

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

요약
각 사람이 다른 사람의 정체에 대해 한 진술이 주어질 때, 모든 진술과 맞는 외계인의 최소 수를 구합니다.
난이도

보통10점 중 5점

유형
그래프, 유니온 파인드, 수학
정답자
아직 제출이 없습니다

문제

시이가 연 하이퍼-스타게이트를 통해 외계인들이 지구를 침략하려고 한다. 외계인은 리버(파괴자)와 스캐럽(갑충탄) 중 하나이다. 이들은 인간 사회에 교묘하게 숨어들어 동호의 집을 날려버리려고 한다. 동호는 집을 지키기 위해 인간 사회에 숨어든 리버와 스캐럽의 수를 알아내려고 한다.

동호는 외계인으로 의심되는 사람 NN명에게 1번부터 NN번까지 번호를 붙이고, 각 사람에게 다른 사람의 정체를 들었다. NN명 중에는 진짜 사람이 최소 한 명 있다.

ii번 사람은 AiA_i번 사람의 정체를 알고 있으며, AiA_i번 사람이 진짜 사람이라고 답하거나 외계인이라고 말했다.

  • ii번 사람이 진짜 사람일 경우: AiA_i번 사람이 진짜 사람이면 진짜 사람이라고, 외계인이면 외계인이라고 주장한다.
  • ii번 사람이 리버일 경우: AiA_i번 사람은 항상 진짜 사람이며, AiA_i번 사람이 외계인이라고 주장한다.
  • ii번 사람이 스캐럽일 경우: AiA_i번 사람은 항상 외계인이며, AiA_i번 사람이 진짜 사람이라고 주장한다.

동호는 외계인의 수가 적기를 바란다. 주어진 답변과 모순되지 않는 외계인의 최소 수를 구하라.

입력

첫 번째 줄에 사람의 수 NN이 주어진다.

그다음 NN개 줄에는 1번 사람부터 NN번 사람까지 각 사람이 말한 다른 사람의 정체가 한 줄에 하나씩 순서대로 주어진다. ii번째 줄에는 ii번 사람이 정체를 말한 사람의 번호 AiA_i가 주어지고, 이어서 공백을 두고 AiA_i번 사람이 외계인이라고 주장하면 1, 진짜 사람이라고 주장하면 0이 주어진다.

출력

첫 번째 줄에 NN명 중 외계인이 최소 몇 명인지 출력한다.

제한

  • 1≤N≤1000001 \le N \le 100000
  • 1≤Ai≤N1 \le A_i \le N

예제1

  1. 예제 1

    입력
    10
    9 1
    9 0
    10 1
    10 0
    7 0
    4 1
    6 1
    7 0
    5 0
    7 0
    
    예상 출력
    3