trang chủ / đề bài / voi25_ship

Người giao hàng

Đề bài

Mô tả

Ở một quốc gia nọ có N hòn đảo, được đánh số lần lượt từ 1 đến N. Có N−1 cây cầu, mỗi cây cầu nối trực tiếp 2 hòn đảo tạo thành một quần thể đảo mà giữa hai hòn đảo bất kỳ luôn tồn tại đường đi thông qua một cây cầu hoặc một dãy các cây cầu.

Tuấn là một người giao hàng của công ty VOI. Ban đầu Tuấn ở hòn đảo 1, được giao K nhiệm vụ giao hàng theo thứ tự từ 1 đến K và Tuấn phải xử lý các nhiệm vụ theo đúng thứ tự đó. Với nhiệm vụ thứ i (1≤i≤K), Tuấn cần thực hiện giao hàng từ hòn đảo Ui đến hòn đảo Vi theo đường đi ghé qua ít hòn đảo nhất. Tuấn chỉ có thể thực hiện nhiệm vụ giao hàng thứ i nếu vị trí của Tuấn đang ở Ui và sau khi hoàn thành giao hàng thì vị trí của Tuấn sẽ là Vi. Lưu ý đối với mỗi nhiệm vụ, Tuấn có thể thực hiện hoặc từ chối giao hàng. Đối với mỗi hòn đảo, công ty sẽ đặt một giá trị phần thưởng mà người giao hàng có thể nhận được cho mỗi lần ghé qua. Với mỗi nhiệm vụ hoàn thành, Tuấn sẽ nhận được phần thưởng là giá trị lớn nhất trong số các giá trị của các hòn đảo nằm trên đường đi giao hàng, tính cả hòn đảo xuất phát và hòn đảo kết thúc.

Yêu cầu: Hãy tính tổng giá trị phần thưởng lớn nhất mà Tuấn có thể nhận được sau K nhiệm vụ.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên N là số lượng hòn đảo (1≤N≤2×105).
  • Dòng thứ hai chứa N số nguyên W1,W2,…,WN là giá trị phần thưởng tại các hòn đảo (0≤W1,W2,…,WN≤109).
  • Mỗi dòng trong số N−1 dòng tiếp theo chứa 2 số nguyên dương thể hiện cây cầu kết nối giữa 2 hòn đảo.
  • Dòng tiếp theo chứa một số nguyên K là số lượng nhiệm vụ (1≤K≤2×105).
  • Dòng thứ i trong số K dòng tiếp theo chứa 2 số nguyên Ui và Vi thể hiện nhiệm vụ giao hàng thứ i (1≤Ui,Vi≤N; Ui≠Vi).

Các số trên cùng một dòng cách nhau bởi dấu cách.

Dữ liệu ra

In ra một số nguyên duy nhất thể hiện tổng giá trị phần thưởng lớn nhất mà Tuấn có thể nhận được sau K nhiệm vụ.

Ràng buộc

  • 1≤N≤2×105; 1≤K≤2×105.
  • 0≤Wi≤109.
  • 1≤Ui,Vi≤N; Ui≠Vi.

Subtasks

  • Subtask 1 (20% số điểm): N,K≤100 và hòn đảo i có cây cầu nối với hòn đảo i+1 (∀i:1≤i≤N−1).
  • Subtask 2 (20% số điểm): N≤10000, K≤100 và hòn đảo i có cây cầu nối với hòn đảo i+1 (∀i:1≤i≤N−1).
  • Subtask 3 (20% số điểm): hòn đảo i có cây cầu nối với hòn đảo i+1 (∀i:1≤i≤N−1).
  • Subtask 4 (20% số điểm): N≤10000 và K≤100.
  • Subtask 5 (20% số điểm): không có ràng buộc nào thêm.

Ví dụ

Input Output Giải thích
4
1 2 3 4
1 2
2 3
3 4
4
1 3
1 2
2 3
2 4
6 Từ chối nhiệm vụ 1, thực hiện nhiệm vụ 2 (đường đi 1→2, thưởng 2), từ chối nhiệm vụ 3, thực hiện nhiệm vụ 4 (đường đi 2→3→4, thưởng 4). Tổng 2+4=6.
7
1 5 5 7 3 16 1
1 4
1 2
2 3
4 5
5 6
5 7
7
1 3
3 2
1 4
4 2
2 5
5 7
5 6
37 Thực hiện các nhiệm vụ 3, 4, 5, 7: 1→4 (thưởng 7), 4→1→2 (thưởng 7), 2→1→4→5 (thưởng 7), 5→6 (thưởng 16). Tổng 7+7+7+16=37.

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