Chọn ĐTQG Thanh Hóa 2025 - RALLY

Xem dạng PDF

Gửi bài giải

Điểm: 60,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Linh là một cô giáo dạy hát cho các bạn trẻ. Để rèn luyện đôi tai cho học trò, Linh thực hiện bài tập sau:

Đầu tiên Linh đưa cho học sinh của mình một chuỗi nốt, gọi chuỗi nốt này là ~A~. Sau đó, Linh hát một chuỗi nốt khác mà học sinh phải nghe, gọi chuỗi nốt này là ~B~. Cuối cùng, học sinh phải trả lời liệu tất cả các nốt trong ~A~ có xuất hiện trong ~B~ theo cùng một thứ tự, bất kể giữa chúng có các nốt trung gian hay không.

Ví dụ: Giả sử các chữ cái được sử dụng để thể hiện các nốt. Nếu ~A = \texttt{abcad}~ và ~B = \texttt{baaacbcaad}~, câu trả lời sẽ là có vì các nốt trong ~A~ xuất hiện trong ~B~ theo cùng một thứ tự. Tuy nhiên, nếu ~A = \texttt{abc}~ và ~B = \texttt{acbbbb}~, câu trả lời sẽ là không vì các nốt trong ~A~ không xuất hiện trong ~B~ theo cùng một thứ tự.

Không chỉ hát hay, Linh còn là CPer đỉnh cao. Với bài tập trên, Linh sử dụng biểu diễn cây. Nghĩa là, một cấu trúc gồm ~N~ đỉnh được kết nối bởi ~N-1~ cạnh sao cho với mỗi cặp đỉnh ~u~ và ~v~ có một đường đi duy nhất từ ~u~ đến ~v~ đi qua một dãy các cạnh.

Trong bài tập, Linh cho học sinh của mình chuỗi ~A~ và chọn ngẫu nhiên hai đỉnh ~u~ và ~v~ từ cây của mình và một chuỗi nốt gồm các ký tự dọc theo chuỗi từ ~u~ đến ~v~ ứng với chuỗi ~B~.

Trong bài này, bạn sẽ nhận được cây đầu vào mà Linh đã sử dụng trong bài tập của mình. Mỗi đỉnh được gán một chữ cái viết thường tượng trưng cho một nốt nhạc. Chương trình của bạn phải trả lời ~Q~ truy vấn. Mỗi truy vấn bao gồm hai đỉnh ~u, v~ và chuỗi ~A~ mà học sinh phải xác định.

Yêu cầu: Đối với mỗi truy vấn, chương trình của bạn phải viết YES nếu chuỗi ~A~ xuất hiện, theo cùng thứ tự trên đường dẫn giữa ~u~ và ~v~ hoặc NO nếu không.

Input

  • Dòng đầu tiên ghi ~2~ số nguyên ~N~ và ~Q~.

  • Dòng thứ hai ghi một chuỗi ~N~ ký tự. Ký tự thứ ~i~ của chuỗi đã cho được gán cho đỉnh ~i~. Các đỉnh được đánh số từ ~1~ đến ~N~.

  • Mỗi dòng trong ~N-1~ dòng sau ghi ~2~ số nguyên dương ~u~ và ~v~ và chỉ ra rằng có một cạnh giữa ~2~ đỉnh trên.

  • Mỗi dòng trong ~Q~ dòng cuối ghi ~2~ số nguyên dương ~u, v~ và một chuỗi ~A~ đại diện cho một truy vấn.

Output

Với mỗi truy vấn, in ra trên một dòng YES hoặc NO.

Scoring

Gọi ~a~ là số ký tự trong chuỗi ~A~. Gọi ~S_A~ là tổng của tất cả ~a~. ~2 \le N, Q \le 3 \cdot 10^5~, ~Q \le S_A \le 3 \cdot 10^5~.

Subtask Điểm Ràng buộc
1 ~20\%~ ~N, Q \le 10^5~. Cây là một đường thẳng, đặc biệt các cạnh có dạng ~(i, i + 1)~. Hơn nữa ~u=1~ và tất cả các chuỗi câu hỏi đều có độ dài bằng ~1~.
2 ~20\%~ ~N, Q \le 1000, S_A \le 2000~.
3 ~20\%~ ~N, Q \le 10^5, S_A \le 2 \cdot 10^5~. Các đỉnh ~u~ và ~v~ đều giống nhau trong mọi câu hỏi.
4 ~20\%~ ~N, Q \le 10^5, S_A \le 2 \cdot 10^5~. Cây là một đường. Đặc biệt, các cạnh có dạng ~(i, i + 1)~.
5 ~20\%~ Không có ràng buộc gì thêm.

Sample Input 1

10 3
zynserbero
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
1 10 zysero
2 9 ser
9 3 ymyr

Sample Output 1

YES
YES
NO

Notes

Trong truy vấn đầu tiên, chuỗi được hình thành bởi đường đi giữa các đỉnh ~1~ và ~10~ là zynserbero. Chuỗi zysero xuất hiện dưới dạng một chuỗi con nếu bạn loại trừ các ký tự đỉnh ~3, 5, 6, 7~.

Trong truy vấn 2, chuỗi được hình thành bởi đường đi giữa các đỉnh ~2~ và ~9~ là ynserber. Chuỗi ser xuất hiện dưới dạng một chuỗi con nếu bạn loại trừ các ký tự đỉnh ~2, 3, 5, 6, 7~.

Trong truy vấn cuối cùng, chuỗi được hình thành bởi đường đi giữa các đỉnh ~9~ và ~3~ là rebresn. Chuỗi ymyr không xuất hiện trong bất kỳ chuỗi con nào vì chữ m không bao giờ xuất hiện trong chuỗi rebresn.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.