Có n hộp, được đánh số 1-n . Mỗi hộp bị khóa, sao cho nó chỉ có thể được mở bằng một loại khóa tương ứng (cũng được đánh số 1-n ). Các khóa này được phân tán ngẫu nhiên trong các hộp (một hộp có thể có bất kỳ số lượng khóa nào, một khóa có thể có bất kỳ số lượng trùng lặp nào), và sau đó tất cả các hộp đều bị đóng. Một kho báu (được đánh số 0 ) cũng đã bị khóa trong nhiều hộp.
Bạn đã thuê một thợ khóa để lấy tất cả các kho báu. Anh ta tính phí cho mỗi hộp anh ta mở ra. Không có phí để mở một hộp mà chìa khóa đã có sẵn.
Đầu vào là nội dung của mỗi hộp. Bạn có thể quyết định định dạng của đầu vào.
Đầu ra chi phí tối thiểu cần thiết để có được kho báu.
Ghi chú
- Thuật toán của bạn có thể mất nhiều thời gian, nhưng điều đó không liên quan.
- Mã ngắn nhất sẽ thắng.
- Không cần phải bận tâm về đầu vào không hợp lệ.
Dữ liệu mẫu
Ở đây dòng i đại diện cho các phím có trong hộp i .
Đầu vào
2 0
3
4 0
5 6 0
6
0
Đầu ra
1
Đầu vào
2 0
3 0
4 0
6
5 0
Đầu ra
3
Đầu vào
2 4 0
3 0
1 0
6
5 0
Đầu ra
2
Đầu vào
1
3 4
2 6
5
Đầu ra
0
[[1] [3 4] [] [] [2 6] [5]]
hoặc có thể {{1},{3,4},{},{},{2,6},{5}}
. Bằng cách này, hầu hết các ngôn ngữ có thể giảm việc đọc đầu vào cho một cái gì đó tầm thường i=eval(read())
và tập trung vào phần thú vị của thử thách.