trang chủ / bài tập / hierarchy

Hệ thống cấp bậc

Đề bài

Mô tả

Một công ty có n nhân viên. Cần xây dựng một cây cấp bậc kiểu "cấp trên – cấp dưới": mỗi nhân viên, ngoại trừ đúng một người (người đứng đầu), có đúng một cấp trên.

m đơn đăng ký, mỗi đơn có dạng: "nhân viên ai sẵn sàng làm cấp trên của nhân viên bi với chi phí phụ trội ci". Mỗi nhân viên j có một chỉ số năng lực qj đã biết, và mọi đơn đều thoả mãn qai>qbi.

Hãy tính tổng chi phí nhỏ nhất để xây dựng cây cấp bậc như vậy, hoặc khẳng định không thể.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số nhân viên.
  • Dòng thứ hai chứa n số nguyên q1,q2,,qn — năng lực của các nhân viên.
  • Dòng thứ ba chứa số nguyên m — số đơn đăng ký.
  • m dòng tiếp theo, mỗi dòng chứa ba số nguyên ai, bi, ci — đơn đăng ký. Hai đơn khác nhau có thể trùng cặp (a,b) nhưng khác c.

Dữ liệu ra

In ra một số nguyên duy nhất — tổng chi phí nhỏ nhất để xây cây cấp bậc, hoặc 1 nếu không thể.

Ràng buộc

  • 1n1000
  • 0qj106
  • 0m10000
  • 1ai,bin, 0ci106
  • qai>qbi với mọi đơn i.

Ví dụ

Input Output Giải thích
4
7 2 3 1
4
1 2 5
2 4 1
3 4 1
1 3 5
11 Chọn đơn 1 (12, chi phí 5), đơn 2 (24, chi phí 1) và đơn 4 (13, chi phí 5). Nhân viên 1 là gốc; tổng chi phí 5+1+5=11.
3
1 2 3
2
3 1 2
3 1 3
-1 Cả nhân viên 2 và 3 đều không có ai có thể làm cấp trên (không có đơn nào nhắm vào họ), nên không thể tạo cây cấp bậc với đúng một gốc.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0