애벌레와 트리
시간 제한5초메모리 제한1024 MB
트리 위에서 경로를 차지한 애벌레가 머리와 꼬리를 한 칸씩 움직여 주어진 머리와 꼬리 위치에 도달할 수 있는지 각 쿼리마다 판정한다.
문제
개의 정점으로 이루어진 트리가 있다. 트리의 각 정점은 번부터 번까지 번호가 매겨져 있고, 번째 간선은 번 정점과 번 정점을 연결한다. 이 트리 위에는 애벌레가 한 마리 살고 있는데, 초기 상태에서 애벌레의 머리는 번 정점에 위치해 있고, 애벌레의 꼬리는 번 정점에 위치해 있다. 애벌레는 머리가 위치한 정점과 꼬리가 위치한 정점, 그리고 그 두 정점 간의 경로에 속한 모든 정점을 차지한다.
현재 애벌레의 머리가 번 정점에, 꼬리가 번 정점에 위치해 있다면, 애벌레는 다음의 조건들을 모두 만족하는 와 에 대해 머리와 꼬리를 각각 번 정점과 번 정점으로 동시에 이동시킬 수 있다.
- 번 정점과 번 정점은 인접해 있고, 번 정점과 번 정점은 인접해 있다.
- 번 정점과 번 정점 중 정확히 하나는 이동 전 애벌레가 차지하지 않았던 정점이고, 나머지 하나는 이동 전 애벌레가 차지했던 정점이다.
이렇게 이동하더라도 애벌레가 차지하는 정점의 개수는 변하지 않음에 유의하라.
이때 아래와 같은 쿼리 개에 대해 답해보자.
- : 머리와 꼬리가 각각 번 정점과 번 정점에 위치한 초기 상태의 애벌레가 번 이상의 이동을 통해 머리와 꼬리가 각각 번 정점과 번 정점에 위치하게끔 할 수 있는가?
입력
첫 번째 줄에 세 개의 정수 , , 가 공백으로 구분되어 주어진다.
다음 개의 줄 중 번째 줄에 두 개의 정수 , 가 공백으로 구분되어 주어진다.
다음 줄에 정수 가 주어진다.
다음 개의 줄에 쿼리들의 정보가 주어지며, 각 줄에는 두 정수 와 가 공백으로 구분되어 주어진다.
출력
개의 줄에 걸쳐 문제의 정답을 출력한다. 번째 줄에는 번째 쿼리의 답이 참이라면 YES를, 거짓이라면 NO를 출력한다.
제한
- 와 사이의 거리와 와 사이의 거리는 같음