아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

바이톤 트리

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

요약
재귀적으로 주어지는 트리에서 잎마다 수확 가능한 시간 구간이 있을 때, 한 시점에 한 번 자르면 그 부분 트리의 모든 열매를 수확한다. 모든 구간을 덮는 최소 자르기 횟수를 구한다.
난이도

보통10점 중 7점

유형
트리, DFS, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

바이톤은 바이톤 트리에서 자라는 희귀한 열매입니다. 바이톤은 잎가지, 즉 다른 가지가 뻗어 나오지 않는 가지에서만 열립니다.

하나의 잎가지에 열린 모든 바이톤은 같은 수확 가능 구간, 즉 딸 수 있는 시간 구간을 공유합니다. 너무 일찍 따면 덜 익고, 너무 늦게 따면 썩습니다. 바이톤 트리의 주인은 모든 바이톤을 모으되, 각 바이톤이 따는 바로 그 순간에 익어 있도록 하면서 가능한 한 적은 횟수로 자르고 싶어 합니다.

자르기는 가지의 밑동에서 이루어집니다. 어떤 가지를 자르면 그 가지에 직접 또는 하위 가지를 통해 열린 모든 바이톤이 즉시 수확됩니다. 한 단위 시간 안에 원하는 만큼 여러 번 자를 수 있으며, 줄기 자체도 하나의 가지로 취급합니다.

트리가 주어질 때, 모든 바이톤을 수확하면서 수확되는 모든 바이톤이 따는 순간에 익어 있도록 하는 데 필요한 최소 자르기 횟수를 구하세요.

입력

입력은 바이톤 트리를 줄기부터 재귀적으로 기술한 한 줄입니다. 하나의 가지는 그 가지에서 자라는 하위 가지의 개수 kk로 시작합니다. k=0k = 0이면 그 가지는 잎가지이며, 뒤에 두 정수 aia_i와 bib_i (1≤ai≤bi≤1091 \le a_i \le b_i \le 10^9)가 오는데, 이는 그 가지에 열린 바이톤의 수확 가능 구간의 시작과 끝 시각입니다. k>0k > 0이면 그 뒤에 kk개의 하위 가지에 대한 기술이 이어집니다. 전체 가지의 개수는 10610^6을 넘지 않습니다.

출력

모든 바이톤을 수확하면서 각 바이톤이 따는 순간에 익어 있도록 하는 데 필요한 최소 자르기 횟수를 정수 하나로 출력하세요.

힌트

예시에서 바이톤은 세 개의 잎가지에 열려 있고, 그림의 구간들은 각각의 수확 가능 구간을 나타냅니다. 두 번 자르면 모두 수확할 수 있습니다. 예를 들어 한 가지는 시각 55에, 다른 가지는 시각 88에 자르면 됩니다.

예제1

  1. 예제 1

    입력
    2 1 0 3 5 2 0 8 10 1 0 6 9
    
    예상 출력
    2