Biến đổi từ vựng Word Ladder: BFS hai đầu (Bidirectional BFS)
Cho từ bắt đầu start, từ đích target và một tập từ điển gồm N từ có cùng độ dài L. Mỗi bước biến đổi chỉ được phép thay đổi đúng 1 ký tự và từ mới tạo thành phải nằm trong tập từ đ…
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: bfs, hash table.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu kỹ thuật duyệt BFS hai đầu (Bidirectional BFS): Mở rộng đồng thời từ đỉnh nguồn và đỉnh đích để giảm không gian tìm kiếm từ O(BD) xuống O(BD/2).
- Xây dựng cạnh kề động trên xâu: Thay vì so sánh mọi cặp từ (O(N2 · L)), thử thay đổi từng ký tự trong 26 chữ cái (O(26 · L)) rồi tra cứu trong bảng băm.
Mô tả bài toán
Cho từ bắt đầu start, từ đích target và một tập từ điển gồm N từ có cùng độ dài L. Mỗi bước biến đổi chỉ được phép thay đổi đúng 1 ký tự và từ mới tạo thành phải nằm trong tập từ điển. Hãy tìm số lượng từ ít nhất trong chuỗi biến đổi từ start đến target (bao gồm cả start và target). Nếu không thể biến đổi, in ra 0.
Quy ước nộp bài
- Chỉ cần viết một chương trình đọc
stdinvà in rastdout. Bài này không yêu cầu viết hàm. - Không dùng
coutđể in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vàostdoutvà làm bài sai. - Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
- Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.
Input
- Dòng 1: Chứa 2 từ
startvàtargetcách nhau bởi dấu cách (1 ≤ L ≤ 10). - Dòng 2: Một số nguyên N (1 ≤ N ≤ 5000).
- N dòng tiếp theo: Mỗi dòng chứa một từ trong từ điển.
Output
- In ra số từ trong chuỗi biến đổi ngắn nhất, hoặc
0nếu không tới được.
Ràng buộc
- 1 ≤ N ≤ 5000, 1 ≤ L ≤ 10.
- Thời gian: 1000ms. Bộ nhớ: 256MB.
Ví dụ 1
Input
hit cog
6
hot
dot
dog
lot
log
cogOutput
5
*Giải thích: Chuỗi biến đổi ngắn nhất là: hit -> hot -> dot -> dog -> cog gồm 5 từ.*Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
