Truy vấn trên cây
Nộp bài giải
Điểm:
6,00 (OI)
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Cho một cây có gốc gồm đỉnh được đánh số từ đến , gốc là đỉnh .
Bạn nhận được truy vấn. Truy vấn thứ cho một tập gồm đỉnh đôi một phân biệt .
Với mỗi truy vấn, hãy xác định xem có tồn tại một đỉnh sao cho mọi đỉnh trong tập đã cho hoặc thuộc đường đi từ gốc đến , hoặc có khoảng cách bằng tới một đỉnh nào đó trên đường đi này (khoảng cách giữa hai đỉnh là số cạnh trên đường đi giữa chúng).
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và — số đỉnh của cây và số truy vấn.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và (, ) mô tả một cạnh của cây.
- dòng tiếp theo, mỗi dòng bắt đầu bằng số nguyên rồi đến số nguyên ().
Đảm bảo các cạnh tạo thành một cây, các đỉnh trong cùng một truy vấn đôi một phân biệt, và .
Dữ liệu ra
Với mỗi truy vấn, in ra "YES" nếu tồn tại đỉnh thỏa mãn yêu cầu, ngược lại in ra "NO".
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 10 6 1 2 1 3 1 4 2 5 2 6 3 7 7 8 7 9 9 10 4 3 8 9 10 3 2 4 6 3 2 1 5 3 4 8 2 2 6 10 3 5 4 7 |
YES YES YES YES NO NO |
Truy vấn 1: chọn , đường đi là ; các đỉnh thuộc đường đi, đỉnh có khoảng cách tới . Truy vấn 2: chọn , các đỉnh đều có khoảng cách tới đường đi . Truy vấn 5: không tồn tại phù hợp cho tập . |
| 2 3 1 2 1 1 1 2 2 1 2 |
YES YES YES |
Cây hai đỉnh; mọi truy vấn đều thỏa với (hoặc ). |
Bình luận