Tìm đường đi ngắn nhất trên đồ thị bằng BFS
Hệ thống mạng truyền thông giữa các máy chủ AI tại AI Empire Academy gồm n nút mạng được đánh số từ 0 đến n - 1. Các liên kết hai chiều giữa các máy chủ được biểu diễn dưới dạng da…
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: graph adjacency list, bfs algorithm, deque.
Nội dung đề bài
Mục tiêu kiến thức
- Xây dựng danh sách kề (Adjacency List) từ danh sách cạnh của đồ thị vô hướng.
- Thuật toán Tìm kiếm theo chiều rộng (BFS) đảm bảo tìm đường đi có số cạnh ít nhất trên đồ thị không trọng số.
- Kỹ thuật truy vết đường đi bằng mảng / từ điển
parent.
Mô tả bài toán
Hệ thống mạng truyền thông giữa các máy chủ AI tại AI Empire Academy gồm n nút mạng được đánh số từ 0 đến n - 1. Các liên kết hai chiều giữa các máy chủ được biểu diễn dưới dạng danh sách cạnh edges.
Hãy viết hàm shortest_path_unweighted(n: int, edges: list[tuple[int, int]], start: int, target: int) -> list[int] | None tìm đường đi ngắn nhất (chứa ít cạnh nhất) từ nút start đến nút target.
Quy tắc:
- Trả về danh sách thứ tự các nút trên đường đi bắt đầu từ
startvà kết thúc tạitarget(ví dụ:[start, v1, v2, target]). - Nếu
start == target, trả về[start]. - Nếu có nhiều đường đi có cùng độ dài ngắn nhất, ưu tiên chọn đỉnh kề có chỉ số nhỏ hơn trước (duyệt danh sách kề theo thứ tự tăng dần).
- Nếu không có đường đi nào giữa hai nút, trả về
None.
Input
n: Số lượng đỉnh nguyên dương.edges: Danh sách các cạnh(u, v).start: Đỉnh xuất phát (0 ≤ start < n).target: Đỉnh đích (0 ≤ target < n).
Output
Danh sách các đỉnh list[int] trên đường đi ngắn nhất, hoặc None.
Ràng buộc
- 1 ≤ n ≤ 104.
- 0 ≤ len(edges) ≤ 5 · 104.
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
`n = 5, edges = [(0, 1), (0, 2), (1, 3), (2, 3), (3, 4)], start = 0, target = 4`Output
`[0, 1, 3, 4]`Giải thích
Từ 0 đến 4 có hai đường đi ngắn nhất độ dài 3 cạnh: 0-1-3-4 và 0-2-3-4. Vì 1 < 2 nên chọn đỉnh 1 trước ⇒ Đường đi là [0, 1, 3, 4].
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.
