Drzewa
시간 제한1초메모리 제한128 MB
라벨이 붙은 루트 트리의 각 노드에서 아래쪽 간선 문자열이 사전 순으로 가장 큰 잎을 찾고 동점이면 번호가 작은 잎을 선택합니다.
문제
서쪽으로 펼쳐진 지역에 번부터 번까지 번호가 붙은 나무 그루가 있습니다. 번은 나무가 아니라 기지이며, 모든 나무보다 동쪽에 있습니다.
각 나무에서는 동쪽으로 정확히 한 개의 길이 뻗어 있어 기지 또는 다른 나무로 이어집니다. 그리고 기지에서 각 나무로 가는 경로는 정확히 하나뿐입니다. 따라서 전체 구조는 번 기지를 뿌리로 하는 트리이고, 각 나무의 동쪽 길은 자신의 부모로 향하며, 서쪽으로 뻗은 길들은 자식으로 향합니다.
모든 길에는 난이도가 정해져 있으며 소문자 알파벳 하나로 나타냅니다. 가 가장 쉽고 가 가장 어렵습니다.
임무는 어떤 나무(또는 기지)에서 출발해, 더 이상 갈 수 없을 때까지 계속 서쪽(자식 방향)으로 이동하는 것입니다. 즉 출발한 곳에서 시작해 서쪽으로 나가는 길이 없는 나무에 도착할 때까지 한 번에 한 길씩 내려갑니다. 지나온 길들의 난이도를 지나온 순서대로 이어 붙이면 그 임무의 난이도 문자열이 됩니다.
두 임무의 어려움은 각자의 난이도 문자열을 사전순으로 비교해 정합니다. 처음으로 서로 달라지는 위치에서 더 어려운(사전순으로 더 큰) 길을 지나는 임무가 더 어렵습니다. 한 임무의 문자열이 다른 임무 문자열의 앞부분과 완전히 같으면서 더 길다면, 더 긴 쪽이 더 어렵습니다. 두 임무의 난이도 문자열이 완전히 같다면, 더 작은 번호의 나무에서 끝나는 임무가 더 어렵다고 봅니다.
모든 나무와 기지 각각에 대해, 그 지점에서 시작하는 가장 어려운 임무가 어느 나무에서 끝나는지 구하세요.
입력
첫째 줄에 정수 ()이 주어집니다.
이어지는 개의 줄 중 번째 줄(에 대응)에는 정수 ()와 소문자 하나 가 공백으로 구분되어 주어집니다. 는 나무 에서 동쪽 길을 따라갔을 때 도착하는 나무(또는 기지)의 번호이고, 는 그 길의 난이도입니다.
출력
개의 정수 을 각각 한 줄에 출력합니다. 는 번 나무(또는 기지)에서 시작하는 가장 어려운 임무가 끝나는 나무의 번호입니다. 에서 서쪽으로 나가는 길이 하나도 없다면 을 출력합니다.