[Buổi 29][Chiến lược đồ thị I][WS] Bài 1: Bộ chọn chiến lược đồ thị
Bộ chọn chiến lược đồ thị
Bối cảnh và bài toán
Trước khi viết code, nhóm kỹ thuật cần chọn một thuật toán đã học trong các buổi B25–B28. Mỗi tình huống mô tả mục tiêu và đặc điểm cạnh. Không được chỉ nhìn thấy đồ thị có hướng/vô hướng rồi đoán DFS hay BFS.
Yêu cầu
Với mỗi tình huống, in một trong năm nhãn: DFS, BFS, TOPO, DIJKSTRA, CHUA_HOC.
task=1: kiểm tra khả năng đi tới một đỉnh (reachability), chọnDFS.task=2: tìm đường đi ngắn nhất. Nếu mọi cạnh có chi phí 1 (weighted=0), chọnBFS. Nếu có trọng số không âm (weighted=1, negative=0), chọnDIJKSTRA. Nếu có cạnh âm (weighted=1, negative=1), inCHUA_HOC: B29 chưa học thuật toán xử lý trường hợp này.task=3: tìm thứ tự phụ thuộc trên DAG (đề bảo đảm không chu trình), chọnTOPO.
Hai cờ weighted và negative không ảnh hưởng khi task=1 hoặc task=3. Dữ liệu luôn có negative=0 khi weighted=0.
Input
Dòng đầu chứa số nguyên T. Mỗi trong T dòng tiếp theo có ba số nguyên task weighted negative.
Output
In T dòng, mỗi dòng chứa đúng một nhãn thuật toán.
Ràng buộc
1 <= T <= 10^5.1 <= task <= 3;weighted,negativethuộc{0,1}.- Nếu
weighted=0thìnegative=0.
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 40 | T <= 100 |
01–08 |
| S2 | 60 | Không có ràng buộc bổ sung | 09–20 |
Ví dụ 1
Input
5
1 0 0
2 0 0
3 0 0
2 1 0
2 1 1
Output
DFS
BFS
TOPO
DIJKSTRA
CHUA_HOC
Giải thích. Mục tiêu cần được nhận diện trước: khả năng đi tới → DFS; đường ngắn nhất không trọng số → BFS; thứ tự DAG → Topo; đường ngắn nhất trọng số không âm → Dijkstra. Trường hợp cạnh âm cần kiến thức của buổi sau nên chưa chọn thuật toán đó ở B29.
Ví dụ 2
Input
3
3 1 1
1 1 0
2 1 0
Output
TOPO
DFS
DIJKSTRA
Giải thích. Với bài toán topo chỉ cần đồ thị là DAG; với reachability, dấu trọng số không ảnh hưởng; với shortest path trọng số không âm, chọn Dijkstra.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M08-B29-WS01 |
| Buổi | B29 |
| Loại bài | WORKSHOP |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 30 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++17 |
Nguồn: FULLHOUSE DEV – Self-generated; thiết kế theo phạm vi lựa chọn giải thuật của B29.
Comments