비행
시간 제한1초메모리 제한256 MB
트리와 질의 (u, v, d)가 주어집니다. 거리가 d 이상인 두 정점 사이로만 이동할 때 u에서 v까지 최소 이동 횟수를 구합니다. 도달할 수 없으면 -1을 출력합니다.
문제
정점이 개인 트리가 주어진다. 두 정점 사이의 거리는 두 정점을 잇는 단순 경로에 속한 간선의 수이다.
질의는 개이다. 각 질의는 두 정점 , 와 정수 로 주어진다. 두 정점의 쌍은 거리가 이상일 때 좋은 쌍이라고 한다. 한 번의 이동에서는 좋은 쌍 사이로만 옮겨 갈 수 있다. 에서 로 가는 데 필요한 최소 이동 횟수를 구하라. 도달할 수 없으면 답은 이다.
질의는 수식으로 생성되므로 그 수가 많다.
입력
첫 줄에 세 정수 , , 이 주어진다. 각각 정점의 수, 질의의 수, 의 상한이다. (, , ).
둘째 줄에는 개의 정수 , , , 이 주어진다. 인 모든 에 대해 정점 와 사이에 간선이 있다 ().
셋째 줄에는 여섯 정수 , , , , , 가 주어진다 (, , ). 첫 번째 질의는 , , 이다.
인 번째 질의는 다음과 같이 생성된다.
,
,
.
여기서 는 번째 질의의 답이다.
출력
다음 정수 를 출력하라.