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

Không có ý kiến tại thời điểm này.