#778. Đường đi tối ưu (BIC)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Ngày nay, việc thu phí đường bộ phát triển rất nhanh. Mật độ đường ngày càng lớn, do đó việc chọn lộ trình tốt nhất là một vấn đề thực tế. Đường trong thành phố là hai chiều, mỗi con đường có thời gian di chuyển cố định và chi phí cần thanh toán.

Một lộ trình là một chuỗi các con đường liên tiếp. Tổng thời gian là tổng thời gian của các con đường thành phần, tổng chi phí là tổng chi phí của các con đường đó. Một lộ trình càng nhanh hoặc chi phí càng thấp thì càng tốt. Cụ thể, nếu một lộ trình nhanh hơn các lộ trình khác và không tốn nhiều tiền hơn, nó được coi là tốt hơn. Ngược lại cũng vậy. Nếu không có lộ trình nào tốt hơn một lộ trình cụ thể, thì lộ trình đó được gọi là lộ trình tối ưu (minimal path).

Có thể có nhiều hơn một lộ trình tối ưu như vậy, hoặc hoàn toàn không tồn tại lộ trình nào.

Vấn đề: Đọc vào mạng lưới giao thông, tính tổng số lượng lộ trình tối ưu. Hai lộ trình tối ưu có cùng chi phí và thời gian chỉ được tính là một. Bạn chỉ cần xuất ra số lượng các loại lộ trình tối ưu khác nhau.

Dữ liệu:

  • Dòng đầu tiên có bốn số nguyên: tổng số thành phố n , tổng số con đường m , thành phố bắt đầu s và thành phố kết thúc e .
  • m dòng tiếp theo, mỗi dòng mô tả thông tin một con đường gồm bốn số nguyên: hai đầu mút p, r , chi phí c , và thời gian t .
  • Giữa hai thành phố có thể có nhiều đường nối.

Kết quả:

  • Một số duy nhất, biểu thị tổng số lượng các lộ trình tối ưu (khác nhau về cặp giá trị chi phí/thời gian).

Ví dụ:

Dữ liệu:

4 5 1 4
2 1 2 1
3 4 3 1
2 3 1 2
3 1 1 4
2 4 2 4

Kết quả:

2

bic.png

Giới hạn: 1\le n\le 100, 0\le m\le 300, 1\le s,e,p,r\le n, 0\le c,t\le 100 . Đảm bảo s\not =e, p\not =r .