애벌레와 트리

시간 제한5초메모리 제한1024 MB

문제

$N$개의 정점으로 이루어진 트리가 있다. 트리의 각 정점은 $1$번부터 $N$번까지 번호가 매겨져 있고, $i$번째 간선은 $u_i$번 정점과 $v_i$번 정점을 연결한다. 이 트리 위에는 애벌레가 한 마리 살고 있는데, 초기 상태에서 애벌레의 머리는 $h$번 정점에 위치해 있고, 애벌레의 꼬리는 $t$번 정점에 위치해 있다. 애벌레는 머리가 위치한 정점과 꼬리가 위치한 정점, 그리고 그 두 정점 간의 경로에 속한 모든 정점을 차지한다.

현재 애벌레의 머리가 $a$번 정점에, 꼬리가 $b$번 정점에 위치해 있다면, 애벌레는 다음의 조건들을 모두 만족하는 $a'$와 $b'$에 대해 머리와 꼬리를 각각 $a'$번 정점과 $b'$번 정점으로 동시에 이동시킬 수 있다.

  • $a$번 정점과 $a'$번 정점은 인접해 있고, $b$번 정점과 $b'$번 정점은 인접해 있다.
  • $a'$번 정점과 $b'$번 정점 중 정확히 하나는 이동 전 애벌레가 차지하지 않았던 정점이고, 나머지 하나는 이동 전 애벌레가 차지했던 정점이다.

이렇게 이동하더라도 애벌레가 차지하는 정점의 개수는 변하지 않음에 유의하라.

이때 아래와 같은 쿼리 $Q$개에 대해 답해보자.

  • $h'$ $t'$: 머리와 꼬리가 각각 $h$번 정점과 $t$번 정점에 위치한 초기 상태의 애벌레가 $0$번 이상의 이동을 통해 머리와 꼬리가 각각 $h'$번 정점과 $t'$번 정점에 위치하게끔 할 수 있는가?

입력

첫 번째 줄에 세 개의 정수 $N$, $h$, $t$가 공백으로 구분되어 주어진다.

다음 $N-1$개의 줄 중 $i$번째 줄에 두 개의 정수 $u_i$, $v_i$가 공백으로 구분되어 주어진다.

다음 줄에 정수 $Q$가 주어진다.

다음 $Q$개의 줄에 쿼리들의 정보가 주어지며, 각 줄에는 두 정수 $h'$와 $t'$가 공백으로 구분되어 주어진다.

출력

$Q$개의 줄에 걸쳐 문제의 정답을 출력한다. $i$번째 줄에는 $i$번째 쿼리의 답이 참이라면 YES를, 거짓이라면 NO를 출력한다.

제한

  • $2\leq N\leq 100000$
  • $1\leq Q\leq 50000$
  • $1\leq u_i,v_i \leq N$
  • $u_i\ne v_i$
  • $1\leq h,t \leq N$
  • $h\ne t$
  • $1\leq h',t' \leq N$
  • $h'$와 $t'$ 사이의 거리와 $h$와 $t$ 사이의 거리는 같음