Hệ thống cấp bậc
Nộp bài giải
Điểm:
4,00 (OI)
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Một công ty có 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.
Có đơn đăng ký, mỗi đơn có dạng: "nhân viên sẵn sàng làm cấp trên của nhân viên với chi phí phụ trội ". Mỗi nhân viên có một chỉ số năng lực đã biết, và mọi đơn đều thoả mãn .
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 — số nhân viên.
- Dòng thứ hai chứa số nguyên — năng lực của các nhân viên.
- Dòng thứ ba chứa số nguyên — số đơn đăng ký.
- dòng tiếp theo, mỗi dòng chứa ba số nguyên , , — đơn đăng ký. Hai đơn khác nhau có thể trùng cặp nhưng khá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 nếu không thể.
Ràng buộc
- ,
- với mọi đơn .
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 (, chi phí 5), đơn 2 (, chi phí 1) và đơn 4 (, chi phí 5). Nhân viên 1 là gốc; tổng chi phí . |
| 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