친척들의 상대적 나이
면접 대비시간 제한1초메모리 제한128 MB
테드의 나이 100과 각 자손의 아버지 이름 및 출생 당시 아버지 나이가 주어질 때, 모든 자손의 나이를 계산해 나이 많은 순으로, 나이가 같으면 이름 사전순으로 출력한다.
문제
오늘은 Ted의 100번째 생일입니다. 몇 주 전, 가족들은 Ted의 모든 후손에게 연락해 깜짝 파티를 준비하는 일을 당신에게 맡겼습니다. 이 일을 쉽게 하려고, 당신은 Ted의 후손 전체를 나이가 많은 사람부터 순서대로 정리한 명단을 만들기로 했습니다. 나이가 같은 후손끼리는 사전 순으로 나열합니다.
당신이 가진 유일한 자료는 출생 증명서뿐입니다. 이상하게도 이 증명서에는 날짜가 적혀 있지 않습니다. 각 증명서에는 아버지의 이름, 아이의 이름, 그리고 그 아이가 태어났을 때 아버지의 정확한 나이(정수인 만 나이)만 적혀 있습니다.
Ted의 모든 후손은 Ted와 생일이 같기 때문에, 어떤 두 사람의 나이 차이도 항상 정수입니다. Ted는 오늘 100세가 되므로 Ted의 나이는 100입니다.
입력
첫 줄에는 데이터 세트의 개수를 나타내는 정수 이 주어집니다. 각 데이터 세트의 형식은 다음과 같습니다.
하나의 데이터 세트는 두 부분으로 구성됩니다.
- 후손 수 — 정수 () 하나가 적힌 줄로, Ted의 후손 수를 나타냅니다.
- 출생 증명서 목록 — 증명서 하나당 한 줄씩 총 개의 줄이며, 각 줄의 형식은
FNAME CNAME FAGE입니다.FNAME은 아버지의 이름입니다.CNAME은 아이의 이름입니다.FAGE는CNAME이 태어난 날 아버지의 나이(정수)입니다.
참고:
- 이름은 각 사람을 유일하게 구분하는 식별자이며, 중간에 공백이 없습니다.
- Ted의 모든 후손은 Ted와 생일이 같으므로, 두 사람의 나이 차이는 항상 정수입니다.
- 증명서는 빠짐없이 모두 모은 것으로, Ted의 후손마다 정확히 하나씩 존재합니다.
출력
각 데이터 세트마다 개의 줄을 출력합니다. 첫 줄은 DATASET Y 이며, 는 첫 번째 데이터 세트에서 , 두 번째에서 , 이런 식으로 증가합니다. 이어지는 개의 줄에는 Ted의 후손 명단을 나이가 많은 사람부터 순서대로 한 줄에 한 명씩 NAME AGE 형식으로 출력합니다. 나이가 같은 후손끼리는 사전 순으로 나열합니다.