닌자 택배
시간 제한1초메모리 제한1024 MB
트리에서 허브 x와 y를 골라 Q개 요청의 가중 이동 비용 합을 최소화합니다.
문제
병우는 나뭇잎 마을의 이장이다. 나뭇잎 마을은 개의 시장과, 두 시장을 잇는 길이 인 양방향 도로 개로 이루어져 있다. 임의의 서로 다른 두 시장은 도로만을 이용하여 오갈 수 있다. 즉, 나뭇잎 마을은 트리 모양이다. 편의상 각 시장에 부터 까지 번호를 매겨 표현하자.
최근 경제가 활성화되면서 시장과 시장 사이에 물건을 옮길 일이 많아졌다. 이런 요청은 총 개이며, 각 요청은 세 정수로 표현된다. 이는 번 시장에서 번 시장까지 총 kg의 물건을 옮겨 달라는 요청이다. 병우는 요청을 처리하기 위해 닌자들을 고용했다. 닌자 택배를 효율적으로 활용하려면 물류 허브로 사용할 두 시장 와 를 잘 골라야 한다. 와 는 서로 달라야 할 필요는 없다.
두 시장 에 대해, 는 도로만을 이용하여 에서 로 갈 때의 최단 거리로 정의한다.
- 모든 물건은 먼저 번 시장으로 모여야 한다. 번 시장에서 번 시장으로 물건을 수송하는 데는 단위 질량, 단위 거리당 의 비용이 든다.
- 이후 닌자들이 신묘한 술법으로 번 시장의 모든 물건을 번 시장으로 옮긴다. 이 작업에는 단위 질량, 단위 거리당 의 비용이 든다.
- 이후 번 시장에서 각 요청의 도착지로 물건을 수송한다. 번 시장으로 물건을 수송하는 데는 단위 질량, 단위 거리당 의 비용이 든다.
즉, 번 시장에서 번 시장으로 kg의 물건을 옮기는 데는 의 비용이 든다. 시장 를 적절히 골라 모든 개 요청의 비용 합을 최소화하는 프로그램을 작성하라.
입력
첫째 줄에 시장의 개수 이 주어진다.
둘째 줄부터 개의 줄에 걸쳐 트리의 간선에 해당하는 도로 정보가 주어진다. 번째 줄에는 두 정수 , 가 공백을 사이에 두고 주어지며, 이는 번째 도로가 번 시장과 번 시장을 잇는다는 뜻이다. 이며, 나뭇잎 마을은 트리 모양임이 보장된다.
번째 줄부터 개의 줄에 걸쳐 두 정수 가 공백을 사이에 두고 주어진다. 는 번 시장에서 번 시장까지 1 kg의 물건을 옮기는 데 드는 단위 거리당 비용이고, 는 번 시장에서 번 시장까지 1 kg의 물건을 옮기는 데 드는 단위 거리당 비용이다.
번째 줄에는 물건 수송 요청의 개수 가 주어진다.
번째 줄부터 개의 줄에 걸쳐 세 정수 가 공백을 사이에 두고 주어진다. 이는 번 시장에서 번 시장까지 kg의 물건을 옮겨 달라는 요청이다. 와 는 같을 수 있고, 같은 에 대해 여러 요청이 주어질 수도 있다.
마지막 줄에는 번 시장에서 번 시장까지 1 kg의 물건을 옮기는 단위 거리당 비용 가 주어진다.
출력
첫째 줄에 개 요청의 비용 합의 최솟값을 출력한다.
제한
- 모든 개의 요청 에 대해, .