Con đường thương nhân
Xem dưới dạng PDF
Gửi bài giải
Điểm:
20
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Một thương nhân muốn vận chuyển hàng hóa từ thành phố \(S\) đến thành phố \(T\) thông qua một mạng lưới đường một chiều nối giữa \(N\) thành phố và \(M\) con đường. Mỗi con đường mang lại lợi nhuận (hoặc chi phí nếu số âm) bằng \(w\).
Hãy tìm cách di chuyển sao cho tổng lợi nhuận thu được trên đường đi từ \(S\) đến \(T\) là lớn nhất. Nếu thương nhân có thể đi qua một hành trình để thu được lợi nhuận lớn vô hạn (tồn tại một chu trình dương trên đường đi từ \(S\) đến \(T\)), in ra \(-1\).
Dữ liệu vào
- Dòng đầu tiên chứa bốn số nguyên \(N, M, S\) và \(T\) (\(1 \le N \le 1000\), \(1 \le M \le 5000\), \(1 \le S, T \le N\)).
- \(M\) dòng tiếp theo, mỗi dòng chứa ba số nguyên \(u, v, w\) (\(1 \le u, v \le N\), \(-1000 \le w \le 1000\)) mô tả một con đường một chiều đi từ \(u\) đến \(v\) có lợi nhuận \(w\).
Kết quả ra
- In ra một số nguyên duy nhất là tổng lợi nhuận lớn nhất tìm được. Nếu không tồn tại đường đi từ \(S\) đến \(T\) hoặc có thể tăng lợi nhuận vô hạn, in ra \(-1\).
Ví dụ
Input
4 4 1 4
1 2 10
2 3 20
3 4 5
1 3 15
Output
35
Nhận xét