소들의 순위 매기기
시간 제한1초메모리 제한128 MB
모든 소의 우유 생산량이 서로 다른 상황에서, 이미 알려진 비교 결과가 주어질 때 전체 순위를 확정하기 위해 필요한 최소 추가 비교 횟수를 구한다.
문제
농부 John에게는 소가 마리 있고 (), 각 소는 서로 다른 양의 속도로 우유를 생산한다. John은 우유를 가장 빨리 생산하는 소부터 가장 느린 소까지 순서대로 정렬하려고 한다.
John은 이미 소 쌍 개 ()의 우유 생산 속도를 비교해 두었다. 이제 그는 소 쌍 개를 추가로 골라, 그 개의 쌍까지 비교하고 나면 마리 소 전체의 정확한 순서를 확실히 알아낼 수 있도록 목록을 만들고 싶다. 이러한 목록이 가능하도록 하는 의 최솟값을 구하여라.
입력
- 첫째 줄: 공백으로 구분된 두 정수 과 .
- 둘째 줄부터 번째 줄까지: 공백으로 구분된 두 정수 와 (). 이는 소 가 소 보다 순위가 높다(우유를 더 빨리 생산한다)는, 이미 알려진 비교 결과를 나타낸다.
출력
- 첫째 줄: 의 최솟값인 정수 하나.
힌트
John이 소 5마리를 비교하며, 이미 소 2 > 소 1, 소 1 > 소 5, 소 2 > 소 3, 소 1 > 소 4, 소 3 > 소 4임을 알아냈다고 하자 (여기서 '>'는 "우유를 더 빨리 생산한다"는 뜻이다).
이 5개의 결과로부터 John은 소 2 > 소 1 > 소 5이고 소 2 > 소 3 > 소 4이므로 소 2의 순위가 가장 높다는 것을 안다. 하지만 두 번째로 높은 소를 정하려면 소 1과 소 3을 비교해야 하고, 소 4와 소 5의 순서를 정하려면 한 번 더 비교해야 하며, 만약 소 1이 소 3보다 높다면 소 5와 소 3도 비교해야 한다. 따라서 전체 순위를 확신하려면 세 번의 질문을 해야 한다: "소 1 > 소 3인가? 소 4 > 소 5인가? 소 5 > 소 3인가?"