애벌레와 트리
시간 제한5초메모리 제한1024 MB
트리 위에서 머리와 꼬리가 각각 h, t에 있는 애벌레가 질의된 h', t'로 움직일 수 있는지 각 질의마다 판단합니다.
문제
개의 정점으로 이루어진 트리가 있다. 정점은 번부터 번까지 번호가 매겨져 있고, 번째 간선은 번 정점과 번 정점을 잇는다. 이 트리 위에 애벌레가 한 마리 살고 있다. 처음에 애벌레의 머리는 번 정점에, 꼬리는 번 정점에 있다. 애벌레는 머리가 있는 정점, 꼬리가 있는 정점, 그리고 두 정점 사이 경로에 속한 모든 정점을 차지한다.
머리가 번 정점, 꼬리가 번 정점에 있을 때, 다음 조건을 모두 만족하는 와 를 골라 머리와 꼬리를 각각 번 정점과 번 정점으로 동시에 옮길 수 있다.
- 번 정점과 번 정점은 인접해 있고, 번 정점과 번 정점은 인접해 있다.
- 번 정점과 번 정점 중 정확히 하나는 이동 전에 애벌레가 차지하지 않았던 정점이고, 나머지 하나는 이동 전에 애벌레가 차지했던 정점이다.
이동하더라도 애벌레가 차지하는 정점의 개수는 변하지 않는다.
개의 쿼리가 주어진다. 각 쿼리는 와 로 주어진다. 머리가 번 정점, 꼬리가 번 정점에 있는 초기 상태의 애벌레가 0번 이상 이동해서 머리를 번 정점, 꼬리를 번 정점에 놓을 수 있는지 판정한다.
입력
첫 번째 줄에 세 정수 , , 가 공백으로 구분되어 주어진다.
다음 개의 줄 중 번째 줄에는 정수 와 가 공백으로 구분되어 주어진다.
다음 줄에 정수 가 주어진다.
다음 개의 줄에는 쿼리 정보인 두 정수 와 가 공백으로 구분되어 주어진다.
출력
개의 줄에 걸쳐 답을 출력한다. 번째 줄에는 번째 쿼리의 답이 가능하면 YES를, 불가능하면 NO를 출력한다.
제한
- 와 사이의 거리는 와 사이의 거리와 같다.