Khoá tủ lạnh
Đề bài
Mô tả
Có người, mỗi người sở hữu một tủ lạnh riêng. Các tủ lạnh được khóa bằng sợi dây xích thép. Mỗi sợi xích nối hai tủ lạnh khác nhau và được bảo vệ bằng một khóa số. Chủ nhân của tủ lạnh biết mã của tất cả các sợi xích nối tới tủ của mình. Một tủ lạnh chỉ có thể mở được khi tất cả các sợi xích nối tới nó đã được mở khóa.
Cho phép tạo nhiều sợi xích giữa cùng một cặp tủ lạnh.
Tủ lạnh được gọi là riêng tư nếu chỉ có chủ nhân (người ) mới có thể mở nó — không tồn tại người nào (một mình) mở được tủ .
Trọng lượng của tủ lạnh là . Tạo một sợi xích nối tủ và tủ tốn đồng.
Bạn cần tạo đúng sợi xích sao cho tất cả các tủ lạnh đều riêng tư, với tổng chi phí nhỏ nhất. Nếu không có cách nào thoả mãn, hãy báo cáo điều đó.
Dữ liệu vào
Dòng đầu tiên chứa một số nguyên () — số bộ dữ liệu.
Với mỗi bộ dữ liệu:
- Dòng thứ nhất chứa hai số nguyên , (, ).
- Dòng thứ hai chứa số nguyên ().
Dữ liệu ra
Với mỗi bộ dữ liệu:
- Nếu không tồn tại cách bố trí thoả mãn, in ra .
- Ngược lại, in ra một số nguyên là tổng chi phí nhỏ nhất. Sau đó in ra dòng, mỗi dòng chứa hai số nguyên (, ) mô tả sợi xích thứ . Có thể có nhiều sợi xích nối cùng một cặp tủ.
Nếu có nhiều đáp án, in ra bất kỳ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 4 4 1 1 1 1 3 1 1 2 3 3 3 1 2 3 |
8 1 2 2 3 3 4 4 1 -1 12 1 2 2 3 3 1 |
Bộ 1: nối thành chu trình , mỗi tủ có bậc với hai láng giềng khác nhau nên đều riêng tư, chi phí . Bộ 2: chỉ có sợi xích, không thể làm cho tủ đều riêng tư. Bộ 3: chu trình , chi phí . |
| 2 2 2 4 3 2 1 13 5 |
-1 -1 |
Khi chỉ có tủ, mọi sợi xích đều nằm giữa và ; người nắm hết mã các xích chạm tủ nên mở được tủ . Không có cách nào cả hai tủ cùng riêng tư. |
Bình luận