만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

1-트리와 쿼리

시간 제한4초메모리 제한512 MB

요약
트리에 간선 x-y를 하나 추가한 뒤, a에서 b까지 정확히 k개의 간선으로 이어지는 경로가 있는지 판별합니다.
난이도

보통10점 중 6점

유형
트리, DFS, 수학
정답자
아직 제출이 없습니다

문제

길동이는 산을 오르며 수많은 나무 사이를 걸었다. 나무에서 영감을 받아 자료구조의 트리에 관해 흥미로운 아이디어를 떠올렸다. 트리에 간선을 하나 더 추가하면 어떻게 될까?

그는 이런 트리 모양의 그래프가 1-트리라고 불린다는 것을 알게 되었다. 길동이는 트리 문제를 너무 많이 풀어서 지겨웠기에, 트리에서 쓰는 기법이 1-트리에서도 통하는지 알고 싶었다. 직접 풀지 않고, 1-트리 위의 쿼리를 주어 당신을 시험하기로 했다.

먼저 정점이 nn개인 트리(1-트리가 아님)가 주어진다. 그다음 qq개의 쿼리가 주어진다. 각 쿼리는 정수 xx, yy, aa, bb, kk 다섯 개로 이루어진다. 정점 xx와 yy 사이에 양방향 간선을 추가한 뒤, 정점 aa에서 bb로 정확히 kk개의 간선을 지나는 경로가 있는지 판단하라. 경로는 같은 정점과 간선을 여러 번 지나도 된다. 모든 쿼리는 서로 독립이며, 한 쿼리에서 추가한 간선은 다음 쿼리 전에 제거된다.

입력

첫 줄에 트리의 정점 개수 nn (3≤n≤1053 \le n \le 10^5)이 주어진다.

이후 n−1n-1개의 줄에 정점 uu와 vv (1≤u,v≤n1 \le u,v \le n, u≠vu \ne v)가 한 줄에 하나씩 주어지며, 두 정점 사이에 간선이 있음을 뜻한다. 모든 간선은 양방향이고 서로 다르다.

다음 줄에 쿼리의 개수 qq (1≤q≤1051 \le q \le 10^5)가 주어진다.

이후 qq개의 줄에 정수 xx, yy, aa, bb, kk (1≤x,y,a,b≤n1 \le x,y,a,b \le n, x≠yx \ne y, 1≤k≤1091 \le k \le 10^9)가 주어진다. 원래 트리에는 xx와 yy 사이에 간선이 없음이 보장된다.

출력

각 쿼리에 대해, 정점 xx와 yy 사이에 간선을 추가했을 때 정점 aa에서 bb로 정확히 kk개의 간선을 지나는 경로가 있으면 "YES", 없으면 "NO"를 출력한다.

대문자와 소문자는 어느 쪽으로 출력해도 된다.

힌트

아래 그림은 트리(원과 실선)와 각 쿼리에서 추가되는 간선(점선)을 나타낸다.

"YES"로 답하는 쿼리의 경로 예시는 다음과 같다.

  • 1번째 쿼리: 1-3-2
  • 2번째 쿼리: 1-2-3
  • 4번째 쿼리: 3-4-2-3-4-2-3-4-2-3

예제1

  1. 예제 1

    입력
    5
    1 2
    2 3
    3 4
    4 5
    5
    1 3 1 2 2
    1 4 1 3 2
    1 4 1 3 3
    4 2 3 3 9
    5 2 3 3 9
    
    예상 출력
    YES
    YES
    NO
    YES
    NO