카멜레온의 사랑
시간 제한2초메모리 제한512 MB
고른 부분집합에서 서로 다른 피부색 개수를 돌려주는 질의를 20000번 이하로 사용해, 원래 색이 같은 카멜레온 쌍을 모두 찾아낸다.
문제
JOI 동물원에는 2N마리의 카멜레온이 있고, 1번부터 2N번까지 번호가 붙어 있다. 그중 N마리의 성별은 X이고, 나머지 N마리의 성별은 Y이다.
각 카멜레온에는 원래의 색이 있다. 원래의 색에 관해 다음이 알려져 있다.
- 성별이 X인 N마리의 카멜레온은 원래의 색이 모두 다르다.
- 성별이 X인 각 카멜레온마다, 원래의 색이 같은 성별 Y인 카멜레온이 정확히 한 마리 존재한다.
지금은 JOI 동물원의 새로운 사랑의 계절이다.
- 각 카멜레온은 다른 카멜레온 한 마리를 사랑한다. 카멜레온의 사랑에 관해 다음이 알려져 있다. • 각 카멜레온은 자신과 성별이 다른 카멜레온 한 마리만을 사랑한다.
- 어떤 카멜레온과 그가 사랑하는 카멜레온은 원래의 색이 다르다.
- 같은 카멜레온을 사랑하는 두 카멜레온은 존재하지 않는다.
카멜레온 일부를 모아 모임을 열 수 있다. 모임에 참석하는 각 카멜레온 s에 대해, s가 사랑하는 카멜레온을 t라 하자. s의 피부색은 다음과 같이 정해진다.
- t가 모임에 참석하면, s의 피부색은 t의 원래의 색이 된다.
- t가 모임에 참석하지 않으면, s의 피부색은 s의 원래의 색이 된다.
카멜레온의 피부색은 모임마다 달라질 수 있다. 각 모임을 열 때마다 그 모임에 참석하는 카멜레온의 피부색 종류의 수를 셀 수 있다.
모임을 20 000번 이하로 열어, 원래의 색이 같은 카멜레온 쌍을 모두 알아내려고 한다.
카멜레온의 수가 주어질 때, 모임을 20 000번 이하로 열어 원래의 색이 같은 카멜레온 쌍을 모두 알아내는 프로그램을 작성하라.
제한
- 2 ≤ N ≤ 500.
- 0 ≤ Yi ≤ 1 (1 ≤ i ≤ 2N).
- 1 ≤ Ci ≤ N (1 ≤ i ≤ 2N).
- 각 j (1 ≤ j ≤ N)에 대해, Yi = 0이고 Ci = j인 i (1 ≤ i ≤ 2N)가 정확히 하나 존재한다.
- 각 j (1 ≤ j ≤ N)에 대해, Yi = 1이고 Ci = j인 i (1 ≤ i ≤ 2N)가 정확히 하나 존재한다.
- 1 ≤ Li ≤ 2N (1 ≤ i ≤ 2N).
- Yi ≠ YLi (1 ≤ i ≤ 2N).
- Ci ≠ CLi (1 ≤ i ≤ 2N).
- Lk ≠ Ll (1 ≤ k < l ≤ 2N).
Yi (1 ≤ i ≤ 2N)는 카멜레온 i의 성별로, 0 또는 1이다. 성별이 X이면 0, 성별이 Y이면 1이다.
Ci (1 ≤ i ≤ 2N)는 카멜레온 i의 원래의 색으로, 1 이상 N 이하의 정수이다.
Li (1 ≤ i ≤ 2N)는 카멜레온 i가 사랑하는 카멜레온의 번호이다.