ACM 세금

가중치 트리에서 두 정점을 잇는 경로마다 간선 길이의 중앙값을 소수 첫째 자리까지 구해 출력한다.

어려움8트리이분 탐색누적 합정렬아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

피터 씨는 마법의 땅 ACM 시티에 산다. 이 도시에는 구역이 NN개, 양방향 도로가 N1N - 1개 있다. 도로는 저마다 두 구역을 잇고 길이가 정해져 있다. 모든 구역은 서로 연결되어 있어서 피터 씨는 어떤 구역 AA에서 어떤 구역 BB로든 갈 수 있다.

ACM 시티에는 이동에 관한 특별한 규칙이 있다. 구역 AA에서 구역 BB로 가려면 그 경로에 놓인 모든 도로 길이의 중앙값만큼 세금을 내야 한다. 도로가 N1N - 1개이고 모든 구역이 연결되어 있으므로 두 구역을 잇는 경로는 하나뿐이다.

아래 그림은 구역이 6개인 ACM 시티다.

원은 구역이고 선은 두 구역을 잇는 도로다. 원 안의 숫자는 구역 번호, 선 위의 숫자는 도로의 길이다. 피터 씨가 1번 구역에서 3번 구역으로 가면 지나는 도로의 길이가 1, 5, 9이므로 세금 5달러를 낸다. 6번 구역에서 4번 구역으로 가면 지나는 도로의 길이가 1, 4, 5, 7이므로 4.5달러를 낸다.

피터 씨는 궁금한 것이 많다. 두 구역 사이를 오갈 때 내는 세금을 모두 알고 싶지만 직접 계산하기는 귀찮아서, 도시에서 가장 뛰어난 프로그래머인 당신에게 계산을 부탁했다.

중앙값은 수를 크기순으로 늘어놓았을 때 한가운데 오는 값이다. 1, 5, 7, 7, 9, 10, 16의 중앙값은 7이다. 수의 개수가 짝수이면 한가운데 두 수의 합을 2로 나눈 값이 중앙값이다. 1, 5, 7, 9, 10, 17, 28, 30의 중앙값은 (9+10)/2=9.5(9 + 10) / 2 = 9.5이다.

구역이 NN개인 ACM 시티가 주어진다. 질문마다 구역 AA에서 구역 BB까지 가는 경로에 놓인 도로 길이의 중앙값을 구하라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. (T15T \le 15)

각 테스트 케이스의 첫째 줄에는 구역의 수 NN이 주어진다. (2N500002 \le N \le 50000)

다음 N1N - 1개 줄에는 정수 UiU_i, ViV_i, WiW_i가 주어진다. 구역 UiU_i와 구역 ViV_i를 길이 WiW_i인 도로가 잇는다는 뜻이다. (1Ui,ViN1 \le U_i, V_i \le N, UiViU_i \ne V_i, 1Wi1000001 \le W_i \le 100000)

그다음 줄에는 질문의 수 QQ가 주어진다. (1Q1000001 \le Q \le 100000)

다음 QQ개 줄에는 정수 AiA_i, BiB_i가 주어진다. 구역 AiA_i에서 구역 BiB_i로 갈 때 내야 하는 세금을 묻는 질문이다. (1Ai,BiN1 \le A_i, B_i \le N, AiBiA_i \ne B_i)

출력

질문마다 한 줄에 하나씩, 구역 AiA_i에서 구역 BiB_i로 갈 때 내야 하는 세금을 소수점 아래 한 자리까지 출력한다.

중앙값은 언제나 정수이거나 소수점 아래가 5인 수이므로 소수점 아래 한 자리로 값을 정확히 적을 수 있다.