Chạy Đi

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

ami đang chạy trên 2 đỉnh \(u\) và \(v\) trên một cái cây. ami sẽ xuất phát từ \(u\) hoặc \(v\), từ một đỉnh \(t\), ami chỉ có thể chạy qua các đỉnh kề với \(t\). Cho \(k\), \(u\) và \(v\), ami cần xác định xem có một lộ trình nào từ \(u\) đến \(v\) có độ dài đúng bằng \(k\) hay không.

Cảm thấy thử thách này là quá dễ với các bạn, ami sẽ giới thiệu thêm 2 đỉnh \(a\) và \(b\). Các bạn cần thêm 1 cạnh giữa 2 đỉnh này. Sau đó, hãy xác định xem có một lộ trình nào từ \(u\) đến \(v\) có độ dài đúng bằng \(k\) hay không. Vẫn còn quá dễ? Vậy hãy trả lời \(q\) câu hỏi có dạng \(a\) \(b\) \(u\) \(v\) \(k\). Hãy nối \(a\) với \(b\) và xác định một lộ trình từ \(u\) đến \(v\) có độ dài bằng \(k\). Cạnh nối \(a\) và \(b\) sẽ tự động bị phá huỷ khi qua một câu hỏi.

Input

  • Dòng đầu tiên chứa một số nguyên dương \(n\) là số đỉnh của cây.
  • \(n-1\) dòng tiếp theo, mỗi dòng chứa 2 số \(u\) và \(v\) là một cạnh của cây.
  • Tiếp theo là số nguyên \(q\) là số truy vấn.
  • \(q\) dòng tiếp theo, mỗi dòng chứa một loại câu hỏi đã nêu trên (gồm 5 số \(a\), \(b\), \(u\), \(v\), \(k\)).

Output

  • Với mỗi truy vấn, in ra YES nếu tồn tại đường đi, và NO trong trường hợp ngược lại.

Example

Test 1

Input
5
1 2
2 3
3 4
4 5
6
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
Output
YES
YES
NO
YES
NO
Note

Cây sau mỗi câu hỏi có dạng sau, đường nét đứt biểu diễn một cạnh trong câu hỏi \(i\), và sẽ không tồn tại ở những câu hỏi khác.

Với truy vấn 1, có thể đi từ 1 - 3 - 2, độ dài là 2.

Với truy vấn 4, có thể đi 3 – 4 – 2 – 3 – 4 – 2 – 3 – 4 – 2 – 3, độ dài là 9.

Giới hạn

  • \(n, q \leq 10^5\)
  • \(1 \leq u, v \leq n\), \(a \neq b\)

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.