Sắp xếp mẫu
Đề bài
Mô tả
Cho mẫu và xâu . Mỗi mẫu gồm ký tự, mỗi ký tự là một chữ cái Latin thường hoặc là ký tự đại diện (ký hiệu bằng dấu gạch dưới _). Tất cả các mẫu đôi một phân biệt. Mỗi xâu gồm chữ cái Latin thường.
Một xâu khớp với một mẫu nếu với mọi vị trí từ đến , hoặc là ký tự đại diện, hoặc .
Bạn cần sắp xếp lại thứ tự các mẫu sao cho, với mỗi xâu , mẫu đầu tiên (theo thứ tự mới) mà khớp phải chính là mẫu . Được phép giữ nguyên thứ tự ban đầu.
Hãy xác định xem có thể sắp xếp lại như vậy hay không. Nếu có, hãy in ra một thứ tự hợp lệ bất kỳ.
Dữ liệu vào
- Dòng đầu chứa ba số nguyên , và .
- dòng tiếp theo, mỗi dòng chứa một mẫu gồm ký tự là chữ cái thường hoặc dấu gạch dưới.
- dòng tiếp theo, mỗi dòng chứa một xâu gồm chữ cái thường, tiếp theo là một số nguyên (), là chỉ số của mẫu mà xâu tương ứng cần khớp đầu tiên.
Dữ liệu ra
- Nếu không có cách sắp xếp nào thỏa mãn, in ra
NO. - Ngược lại, in ra
YESở dòng đầu. Dòng thứ hai chứa số nguyên phân biệt từ đến là thứ tự các mẫu. Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.
Ràng buộc
- Các mẫu đôi một phân biệt.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 3 4 bd __b_ aaaa ab__ _bcd abcd 4 abba 2 dbcd 5 |
YES 2 3 4 5 1 |
Với thứ tự b_, aaaa, ab, bcd, bd: xâu abcd khớp ab__, bcd, bd và mẫu đầu tiên là ab tức ; xâu abba khớp _b, ab__ và mẫu đầu tiên là _b tức ; xâu dbcd khớp _bcd, bd và mẫu đầu tiên là _bcd tức . Đáp án không duy nhất, chấp nhận mọi thứ tự hợp lệ. |
| 2 2 2 a_ _b ab 1 ab 2 |
NO | Thứ tự (a_, _b) khiến cả hai xâu khớp mẫu 1 đầu tiên, còn thứ tự (b, a) khiến cả hai khớp mẫu 2 đầu tiên. Không có thứ tự nào cho kết quả 1 và 2. |
| 1 1 3 __c cba 1 |
NO | Xâu cba không khớp mẫu __c (vị trí thứ ba là c nhưng cba có a), nên không tồn tại thứ tự hợp lệ. |
Bình luận