trang chủ / đề bài / voi21_teamup

Chia nhóm

Đề bài

Mô tả

Một công ty có n nhân viên, các nhân viên được đánh số từ 1 đến n. Công ty đang chuẩn bị kỉ niệm 100 năm thành lập và dự định tổ chức nhiều hoạt động ngoại khóa. Một hoạt động được nhiều người mong đợi đòi hỏi phải chia n nhân viên thành hai nhóm. Qua thu thập thông tin, Ban tổ chức biết được rằng, nhân viên i không muốn cùng nhóm với nhân viên pi (1≤i≤n). Dựa trên yêu cầu của mỗi nhân viên, Ban tổ chức muốn tìm một cách chia n nhân viên thành hai nhóm mà nhân viên i khác nhóm với nhân viên pi. Trường hợp không tồn tại cách chia thỏa mãn, Ban tổ chức sẽ phải thuyết phục một số người chấp nhận cùng nhóm với người mà họ không muốn, thời gian để thuyết phục nhân viên i cùng nhóm với nhân viên pi là wi.

Theo thông tin mà Ban tổ chức mới nhận được thì dữ liệu thu thập có thể chưa đầy đủ, có thể có thêm một cặp nhân viên (u,v) không muốn cùng một nhóm. Ban tổ chức đã đưa ra một danh sách gồm m+1 giả định: Giả định 0, không có thêm cặp nào; giả định thứ k (1≤k≤m) là có thêm cặp nhân viên (uk,vk) không muốn cùng nhóm với nhau và nếu muốn cả hai nhân viên uk và vk đồng ý cùng nhóm thì phải mất thời gian thuyết phục cặp (uk,vk) là tk.

Yêu cầu: Với mỗi giả định, hãy giúp Ban tổ chức tính toán tổng thời gian thuyết phục ít nhất để có thể chia n nhân viên thành hai nhóm.

Dữ liệu vào

  • Dòng đầu chứa số nguyên dương n (n≤105);
  • Dòng thứ i trong số n dòng tiếp theo chứa hai số nguyên dương pi,wi (pi≤n; pi≠i; wi≤109);
  • Dòng tiếp theo chứa số nguyên không âm m (m≤105);
  • Dòng thứ k trong số m dòng tiếp theo chứa ba số nguyên dương uk,vk,tk (uk,vk≤n; uk≠vk; uk≠pvk; vk≠puk; tk≤109).

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+1 dòng, mỗi dòng một số nguyên là tổng thời gian thuyết phục ít nhất lần lượt tương ứng cho từng giả định.

Ràng buộc

  • 2≤n≤105; 0≤m≤105.
  • 1≤pi≤n, pi≠i; 1≤wi≤109.
  • 1≤uk,vk≤n; uk≠vk; uk≠pvk; vk≠puk; 1≤tk≤109.

Subtasks

  • Subtask 1 (20% số điểm): m=0, n≤1000 và dãy p1,p2,…,pn là hoán vị của 1,2,…,n.
  • Subtask 2 (20% số điểm): m=0, n≤1000.
  • Subtask 3 (25% số điểm): m≤1000, n≤1000.
  • Subtask 4 (15% số điểm): dãy p1,p2,…,pn là hoán vị của 1,2,…,n.
  • Subtask 5 (20% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5
2 3
3 4
4 1
5 3
1 2
2
1 4 2
1 3 1
1
2
2
Giả định 0: thuyết phục nhân viên 3 mất 1 đơn vị thời gian. Khi đó, có thể chia thành hai nhóm (1,3,4) và (2,5). Giả định 1: thuyết phục nhân viên 5 mất 2 đơn vị thời gian. Khi đó, có thể chia thành hai nhóm (1,3,5) và (2,4). Giả định 2: thuyết phục nhân viên 3 mất 1 đơn vị thời gian và thuyết phục cặp (1,3) mất 1 đơn vị thời gian. Khi đó, có thể chia thành hai nhóm (1,3,4) và (2,5).
5
2 5
3 2
1 7
1 4
4 3
3
5 1 6
4 2 1
5 3 8
2
5
3
2
Ví dụ thêm (không có trong đề gốc). Giả định 0: thuyết phục nhân viên 2 (thời gian 2), hai nhóm (1,5) và (2,3,4). Giả định 1: thêm thuyết phục nhân viên 5 (thời gian 3), hai nhóm (1) và (2,3,4,5). Giả định 2: thuyết phục nhân viên 2 và cặp (4,2), tổng 2+1=3, hai nhóm (1,5) và (2,3,4). Giả định 3: cách chia của giả định 0 vẫn dùng được, tổng 2.

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