Thuật toán Tarjan tìm Điểm khớp (Articulation Points) và Cầu (Bridges)
Cho đồ thị vô hướng gồm n đỉnh (từ 0 đến n - 1) và danh sách các cạnh edges.
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: graphs, dfs.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu cấu trúc cây DFS (DFS Spanning Tree) và các cạnh ngược (Back-edges).
- Cài đặt thời điểm thăm
tin / discvà giá trị liên kết thấp nhấtlow. - Phát hiện các cạnh cầu (Bridges) và đỉnh khớp (Articulation Points) trong thời gian O(V + E).
Mô tả bài toán
Cho đồ thị vô hướng gồm n đỉnh (từ 0 đến n - 1) và danh sách các cạnh edges.
Viết hàm find_bridges_and_articulation_points(n: int, edges: list[tuple[int, int]]) -> tuple[list[tuple[int, int]], list[int]]:
- Tìm tất cả các Cạnh cầu (Bridges): cạnh mà khi loại bỏ nó, số thành phần liên thông của đồ thị tăng lên.
- Mỗi cạnh được chuẩn hóa dạng
(min(u, v), max(u, v)). - Danh sách các cạnh cầu được sắp xếp tăng dần theo thứ tự từ điển.
- Tìm tất cả các Điểm khớp (Articulation Points): đỉnh mà khi loại bỏ nó cùng các cạnh nối với nó, số thành phần liên thông của đồ thị tăng lên.
- Danh sách các đỉnh khớp được sắp xếp tăng dần.
- Hỗ trợ đồ thị không liên thông.
Input
- Tham số:
n: int,edges: list[tuple[int, int]].
Output
- Trả về:
tuple[list[tuple[int, int]], list[int]].
Ràng buộc
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
find_bridges_and_articulation_points(4, [[0, 1], [1, 2], [2, 0], [1, 3]])Output
[[[1, 3]], [1]]Giải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Ví dụ 2
Input
find_bridges_and_articulation_points(3, [[0, 1], [1, 2]])Output
[[[0, 1], [1, 2]], [1]]Giải thích
Hàm được gọi với bộ tham số thứ hai và trả về kết quả tương ứng theo thiết kế.
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.
