분할 노드들의 숲이 주어질 때 각 분할 노드의 잎들이 연속되도록 잎 레이블을 배치하고, 사전순으로 가장 앞서는 수열을 골라 위치 질의에 답한다.
보통7트리DFS정렬그리디아직 제출이 없습니다시간 제한8초메모리 제한512 MB이시마쓰 전자의 개발 부서는 디스크와 저장 장치, 네트워크 장비, 휴대전화처럼 서로 다른 제품군을 하나씩 맡는다. 한 부서가 다루는 제품의 종류가 많아서 제품 관리 부서 직원은 새 제품을 어느 분류에 넣어야 할지 판단하기 어려웠다. 그래서 한 직원이 분류 다이어그램이라는 그림을 제안했다.
분류 다이어그램은 큰 종이 한 장에 이렇게 그린다. 종이 위쪽에는 개발 부서 이름을 적는다. 이것이 시작 노드다. 가운데에는 제품의 특징을 가르는 질문을 적는다. 이것이 분기 노드다. 아래쪽에는 분류 이름을 적는다. 이것이 끝 노드다. 시작 노드는 각각 분기 노드 하나 또는 끝 노드 하나와 이어지고, 분기 노드에서 아래로 내려가는 선에는 질문의 답을 적는다. 제품을 분류할 때는 그 제품을 만든 부서의 시작 노드에서 출발해 선을 따라 내려가며, 도착한 끝 노드에 적힌 이름이 그 제품의 분류다.
그림 자체는 알아보기 쉽지만 손으로 그린 다이어그램은 선이 여러 번 교차해서 지저분했다. 선이 하나도 교차하지 않는 깔끔한 다이어그램을 대신 그려 달라는 의뢰가 들어왔다.
질문의 내용은 무시하고 분류 이름 대신 1 이상 N 이하의 정수 라벨을 쓴다. 분기 노드의 y좌표와 라벨 목록을 주면 다이어그램의 연결 관계가 정해진다. 이제 끝 노드를 왼쪽부터 1번, 2번, 차례로 N번 위치까지 한 자리에 하나씩 놓는다. 선이 교차하지 않는 배치란 모든 분기 노드에 대해 그 아래에 매달린 끝 노드가 연속한 위치를 차지하는 배치를 말한다. 그런 배치가 여러 개이면 1번 위치부터 N번 위치까지 읽은 라벨 수열이 사전순으로 가장 앞서는 배치 하나를 답으로 정한다.
질의는 위치 번호 하나를 준다. 그 위치에 놓인 끝 노드의 라벨을 답하면 된다.
입력은 여러 개의 데이터 세트로 이루어진다. 각 데이터 세트의 형식은 다음과 같다.
N M Q
분기 노드 정보 1
분기 노드 정보 2
...
분기 노드 정보 M
질의 1
질의 2
...
질의 Q
첫 줄에는 끝 노드의 개수 N, 분기 노드의 개수 M, 질의의 개수 Q가 주어진다. 이어서 M개의 줄에 분기 노드 정보가 한 줄에 하나씩 주어지고, 각 줄의 형식은 다음과 같다.
Y L 라벨1 라벨2 ...
Y는 그 분기 노드의 y좌표이며 값이 작을수록 위쪽이다. L은 라벨 목록의 길이이고, 그 뒤에 L개의 끝 노드 라벨이 온다. 한 목록 안의 라벨은 서로 다르다.
연결 관계는 라벨 목록으로 정해진다. 끝 노드 라벨 e에 대해, 목록에 e가 들어 있는 분기 노드를 y좌표가 작은 것부터 나열한 것을 C(e)라 하자.
한 분기 노드는 자기보다 위에 있는 분기 노드와 많아야 하나 연결된다. 그래서 다이어그램 전체는 끝 노드를 잎으로 하는 숲이 된다.
분기 노드 정보 다음에는 Q개의 줄에 질의가 하나씩 주어진다. 각 질의는 끝 노드의 가로 위치이고 가장 왼쪽 위치가 1번이다.
제약은 다음과 같다.
N=M=Q=0인 데이터 세트가 입력의 끝을 알린다. 이 데이터 세트는 처리하지 않는다.
각 데이터 세트마다 Q개의 줄을 출력한다. i번째 줄에는 i번째 질의가 가리키는 위치에 놓인 끝 노드의 라벨을 적는다. 배치는 선이 교차하지 않는 배치 가운데 라벨 수열이 사전순으로 가장 앞서는 것 하나를 쓴다.
각 데이터 세트의 출력 뒤에는 빈 줄을 하나 출력한다.