만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Meet In The Middle

시간 제한1초메모리 제한1024 MB

요약
가중치가 있는 트리와 두 마을을 지정하는 K개의 질의가 주어질 때, 두 마을까지의 거리가 같은 마을을 찾고, 합이 최소인 것을 출력하며, 없으면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
트리, 그래프, 최단 경로, 수학
정답자
아직 제출이 없습니다

문제

신촌 왕국에는 11번부터 NN번까지 NN개의 마을이 있고 N−1N-1개의 도로가 서로 다른 두 마을을 연결하고 있다. 모든 마을은 도로를 통해 다른 마을로 갈 수 있고, 이때 마을 내에서의 이동 거리는 무시할 수 있다.

현재 신촌 왕국은 "대칭병"의 대유행으로 혼란을 겪고 있다. 대칭병은 어떤 것이든 대칭을 이루지 않으면 심신이 불편해져 일상생활을 할 수 없게 만드는 병이다. 대칭병의 여파는 엄청났는데 심지어 사람과 사람 간의 만남조차 어렵게 됐다. 신촌 왕국의 두 사람이 만나는 상황을 생각해보자. 약속 장소가 둘 중 한 사람의 마을에 더 가깝다면 아주 불편해진다. 따라서 두 사람이 사는 각 마을까지의 거리가 정확히 같은 곳을 약속 장소로 정해야 할 것이다. 즉, Meet in the middle. 가운데에서 만나야 한다!

신촌 왕국 도로 정보와 만나려는 두 사람의 마을이 주어졌을 때, 약속 장소로 적절한 위치를 구해보자.

입력

첫 번째 줄에 마을의 수 NN, 약속의 수 KK가 주어진다. (1≤N,K≤100 000)(1 \le N, K \le 100\,000)

이어지는 줄부터 N−1N-1개의 줄에 도로 정보를 나타내는 세 정수 uu, vv, ww가 주어진다. uu번 마을과 vv번 마을 사이에 길이 ww의 도로가 있다는 뜻이다. (1≤u,v≤N(1 \le u, v \le N, u≠vu \neq v, 1≤w≤109)1 \le w \le 10^9)

이어지는 줄부터 KK개의 줄에 만나려는 두 사람의 마을 번호 uu, vv가 주어진다. (1≤u,v≤N)(1 \le u, v \le N)

출력

KK개의 줄에 두 사람의 만날 수 있는 마을의 번호를 출력한다. 그러한 마을이 없다면 -1을 출력한다. 가능한 답이 여러 가지라면, 두 사람이 사는 각 마을까지 거리의 합이 짧은 것을 출력한다.

예제1

  1. 예제 1

    입력
    7 4
    1 2 2
    1 3 3
    1 6 1
    2 4 1
    2 5 1
    3 7 1
    3 4
    4 5
    1 7
    6 6
    
    예상 출력
    1
    2
    -1
    6