trang chủ / đề bài / voi20_bus

Đi xe buýt

Đề bài

Mô tả

Xe buýt là một phương tiện giao thông phổ biến tại thành phố mà Alice sinh sống bởi tính tiện dụng và giá cả hợp lý của nó. Thành phố có n bến xe buýt được đánh số từ 1 tới n và có m tuyến xe buýt hai chiều, mỗi tuyến đang được điều hành bởi một trong hai công ty vận tải A hoặc B. Cụ thể, tuyến thứ i (1≤i≤m) di chuyển giữa hai bến ui và vi với giá vé do công ty quản lý quy định là wi.

Lưu ý là giữa hai bến có thể có nhiều hơn một tuyến xe buýt.

Hai công ty A và B đều có chính sách giảm giá vé cho những ai thường xuyên đi bằng xe buýt. Cụ thể, mỗi ngày công ty A sẽ chỉ thu số tiền bằng với giá vé lớn nhất trong tất cả các tuyến được điều hành bởi công ty A mà khách hàng đã đi trong ngày. Để cạnh tranh, công ty B cũng có chính sách tương tự: khách hàng sẽ chỉ phải trả số tiền bằng giá vé lớn nhất trong tất cả các tuyến thuộc công ty B mà người đó đã đi trong ngày.

Nhà Alice ở gần bến xe buýt s và nơi làm của Alice ở gần bến xe buýt t nên hàng ngày Alice đều phải đi lại giữa hai bến này thông qua các tuyến xe buýt.

Yêu cầu: Bạn hãy giúp Alice xác định số tiền nhỏ nhất cần bỏ ra mỗi ngày để đảm bảo việc đi từ bến xe buýt s đến bến xe buýt t.

Dữ liệu vào

  • Dòng đầu tiên chứa bốn số nguyên dương n, m, s và t (n,m≤50000; s,t≤n; s≠t);
  • Dòng thứ i (1≤i≤m) trong m dòng tiếp theo chứa bốn số nguyên dương ci,ui,vi,wi (ui,vi≤n; ui≠vi; wi≤109) mô tả tuyến xe buýt thứ i, trong đó ci=1 nếu tuyến này được điều hành bởi công ty A hoặc ci=2 nếu tuyến này được điều hành bởi công ty B.

Các số trên cùng một dòng cách nhau bởi dấu cách. Dữ liệu đảm bảo luôn tồn tại cách đi lại giữa hai bến xe buýt s và t thông qua m tuyến xe.

Dữ liệu ra

In ra một số nguyên duy nhất là số tiền nhỏ nhất cần bỏ ra mỗi ngày để đảm bảo được việc đi từ bến xe buýt s đến bến xe buýt t cho Alice.

Ràng buộc

  • n,m≤50000; 1≤s,t≤n; s≠t;
  • ci∈{1,2}; 1≤ui,vi≤n; ui≠vi; 1≤wi≤109;
  • Luôn tồn tại cách đi từ s đến t.

Subtasks

  • Subtask 1 (20% số test, 20% số điểm): tất cả m tuyến xe buýt đều được điều hành bởi công ty A;
  • Subtask 2 (30% số test, 30% số điểm): n,m≤5000;
  • Subtask 3 (20% số test, 20% số điểm): tồn tại cách đi xe buýt tối ưu trong đó Alice chỉ sử dụng tối đa một tuyến xe của công ty B;
  • Subtask 4 (30% số test, 30% số điểm): không có điều kiện gì thêm.

Ví dụ

Input Output Giải thích
6 7 1 4
1 1 2 4
2 2 3 7
1 3 4 6
2 1 6 5
1 6 5 5
2 5 4 8
2 2 5 2
12 Để đi từ 1 đến 4, Alice lần lượt đi tuyến (1,2) của công ty A và hai tuyến (2,5), (5,4) của công ty B. Khi đó số tiền Alice phải trả cho công ty A là 4 và trả cho công ty B là 8, tổng 12.
3 3 1 3
2 1 2 5
2 2 3 4
1 1 3 10
5 Ví dụ thêm (không có trong đề gốc). Alice đi hai tuyến (1,2) và (2,3) đều của công ty B, chỉ trả cho công ty B giá vé lớn nhất là 5 và không trả gì cho công ty A.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0