Thuật toán Bellman-Ford / SPFA tìm đường đi ngắn nhất và phát hiện chu trình âm
Cho một đồ thị có hướng gồm N đỉnh (1 ≤ N ≤ 2500) và M cạnh (1 ≤ M ≤ 5000). Mỗi cạnh có trọng số w (có thể âm).
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 representation, dijkstra, queue.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu nguyên lý nới lỏng cạnh (Edge Relaxation) của Bellman-Ford: Thực hiện nới lỏng N-1 lần trên toàn bộ M cạnh.
- Phát hiện chu trình âm: Nếu ở lần lặp thứ N vẫn có cạnh tiếp tục nới lỏng được, đồ thị chứa chu trình âm tới được từ đỉnh nguồn.
- Tối ưu hóa bằng SPFA (Shortest Path Faster Algorithm) với hàng đợi và mảng đếm số lần vào hàng đợi
cnt[u] >= N.
Mô tả bài toán
Cho một đồ thị có hướng gồm N đỉnh (1 ≤ N ≤ 2500) và M cạnh (1 ≤ M ≤ 5000). Mỗi cạnh có trọng số w (có thể âm).
Hãy tìm đường đi ngắn nhất từ đỉnh nguồn 1 đến đỉnh đích N. Nếu tồn tại chu trình âm mà từ đỉnh 1 có thể đi tới chu trình đó và từ chu trình đó có thể đi tới đỉnh N (khiến khoảng cách tới N có thể giảm xuống -∞), in -INF. Nếu không có đường đi từ 1 tới N, in INF. Ngược lại in giá trị đường đi ngắn nhất.
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: Gồm 2 số nguyên N và M (1 ≤ N ≤ 2500, 1 ≤ M ≤ 5000).
- M dòng tiếp theo: Mỗi dòng gồm 3 số nguyên u, v, w (1 ≤ u, v ≤ N, -109 ≤ w ≤ 109).
Output
- In ra một số nguyên duy nhất là khoảng cách ngắn nhất, hoặc
INFhoặc-INF.
Ràng buộc
- 1 ≤ N ≤ 2500.
- 1 ≤ M ≤ 5000.
- -109 ≤ w ≤ 109.
- Thời gian chạy: 1000ms.
- Bộ nhớ tối đa: 256MB.
Ví dụ 1
Input
4 4
1 2 1
2 3 -2
3 1 -1
3 4 5Output
-INF
*Giải thích:* Chu trình 1 -> 2 -> 3 -> 1 có tổng trọng số là $1 + (-2) + (-1) = -2 < 0$, dẫn tới đỉnh 4 có khoảng cách tiến tới $-\infty$.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.
