가중 트리에서 쿼리마다 주어지는 두 공장 집합 사이 최단 거리를 구합니다.
어려움9분할 정복트리최단 경로아직 제출이 없습니다시간 제한6초메모리 제한512 MBIOI 왕국에는 0번부터 N−1번까지 번호가 붙은 도시가 N개 있다. 도시는 양방향으로 통행할 수 있는 도로 N−1개로 이어져 있고, 어느 두 도시 사이든 도로를 몇 개 지나 오갈 수 있다.
IOI 왕국에는 특별한 제품을 만드는 회사가 많다. 회사마다 제품을 한 종류만 만들고, 서로 다른 두 회사가 같은 종류의 제품을 만드는 일은 없다. 회사는 저마다 공장을 하나 이상 두고 있으며, 공장은 모두 도시 중 한 곳에 지어져 있다. 한 도시에 여러 회사가 공장을 둘 수도 있다.
회사 CA가 회사 CB의 제품을 필요로 할 때가 있다 (CA=CB). 이때는 CB의 공장 하나에서 CA의 공장 하나로 제품을 옮기면 된다. 두 회사는 공장 사이의 거리가 가장 짧아지도록 공장을 고른다.
먼저 도시의 수와 도로 정보가 주어지고, 이어서 질의가 Q개 주어진다. j번 질의의 뜻은 이렇다. 도시 Xj,0,…,Xj,Sj−1에 공장을 둔 회사 Uj가 도시 Yj,0,…,Yj,Tj−1에 공장을 둔 회사 Vj의 제품을 필요로 한다. 질의마다 제품을 옮기는 데 드는 최소 거리를 구하는 프로그램을 작성하시오.
첫째 줄에 정수 N과 Q가 공백을 사이에 두고 주어진다. IOI 왕국에 도시가 N개 있고, 질의가 Q개 주어진다는 뜻이다.
이어지는 N−1개 줄 가운데 i+1번째 줄 (0≤i≤N−2)에는 정수 Ai, Bi, Di가 공백을 사이에 두고 주어진다. 도시 Ai와 도시 Bi를 잇는 길이 Di짜리 도로가 있다는 뜻이다.
그다음 3Q개 줄에 질의가 주어진다. j번 질의 (0≤j≤Q−1)의 정보는 3j+1번째 줄부터 3j+3번째 줄까지다.
3j+1번째 줄에는 정수 Sj와 Tj가 공백을 사이에 두고 주어진다. 회사 Uj가 도시 Sj곳에, 회사 Vj가 도시 Tj곳에 공장을 두었다는 뜻이다.
3j+2번째 줄에는 정수 Sj개 Xj,0,…,Xj,Sj−1이 공백을 사이에 두고 주어진다. 회사 Uj가 이 도시들에 공장을 두었다는 뜻이다.
3j+3번째 줄에는 정수 Tj개 Yj,0,…,Yj,Tj−1이 공백을 사이에 두고 주어진다. 회사 Vj가 이 도시들에 공장을 두었다는 뜻이다.
모든 입력은 다음 조건을 만족한다.
질의의 답을 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.
예제의 세 질의는 다음과 같이 풀린다.