포개어지는 러시아 인형
시간 제한1초메모리 제한128 MB
너비와 높이가 주어진 인형들을 두 차원 모두에서 엄격히 증가하는 사슬들로 나눌 때 필요한 최소 사슬 수를 구한다. 딜워스 정리에 따라 최장 반사슬의 길이와 같다.
문제
Dilworth는 러시아 목각 인형(마트료시카)을 세계에서 가장 많이 모으는 수집가로, 수천 개를 가지고 있다. 마트료시카는 크기가 서로 다른 속이 빈 나무 인형으로, 가장 작은 인형이 두 번째로 작은 인형 안에 들어가고, 그 인형은 다시 그다음 인형 안에 들어가는 식으로 겹겹이 포개진다.
어느 날 그는 인형들을 다른 방식으로 포개면 서로 떨어진 인형 묶음의 개수를 더 줄일 수 있을지 궁금해졌다. 그렇게 하면 그의 컬렉션이 한층 더 근사해질 것이다.
그는 모든 인형을 풀어헤쳐 각 인형의 너비와 높이를 측정했다. 너비가 , 높이가 인 인형은 오직 이고 일 때에만 너비 , 높이 인 다른 인형 안에 들어간다. 하나의 인형 안에는 다른 인형을 최대 한 개만 직접 넣을 수 있으므로(그 인형이 또 다른 인형을 품을 수는 있다), 하나로 포개진 묶음에 속한 인형들은 너비와 높이가 모두 순증가하는 사슬을 이룬다.
모든 측정값이 주어질 때, 전체 컬렉션을 조립했을 때 나올 수 있는 서로 떨어진 인형 묶음의 최소 개수를 구하여라.
입력
첫째 줄에 테스트 케이스의 개수 ()가 주어진다.
각 테스트 케이스는 인형의 개수 ()이 적힌 줄로 시작한다. 이어서 개의 정수 이 주어지며, 와 는 각각 번째 인형의 너비와 높이이다 (). 이 개의 정수는 한 줄 또는 여러 줄에 걸쳐 공백으로 구분되어 주어질 수 있다.
출력
각 테스트 케이스마다, 전체 컬렉션을 담는 데 필요한 서로 떨어진 인형 묶음의 최소 개수를 한 줄에 하나씩 출력한다.