Chu trình đơn dài nhất
Đề bài
Mô tả
Cho chuỗi (chain). Chuỗi thứ gồm đỉnh được đánh số từ tới và có cạnh nối hai đỉnh liền kề: cạnh giữa đỉnh và đỉnh với mọi .
Ta hợp các chuỗi này lại thành một đồ thị duy nhất theo quy tắc:
- Chuỗi đầu tiên được giữ nguyên.
- Với mỗi : nối đỉnh của chuỗi với đỉnh của chuỗi bằng một cạnh.
- Với mỗi : nối đỉnh (đỉnh cuối) của chuỗi với đỉnh của chuỗi bằng một cạnh.
Hai giá trị và được cho bằng chỉ để giữ chỉ số nhất quán; chúng không tham gia xây dựng đồ thị.
Hãy tìm độ dài của chu trình đơn dài nhất trong đồ thị thu được. Độ dài của một chu trình được tính bằng số cạnh trên chu trình đó. Chu trình đơn là chu trình mà mỗi đỉnh trên đó được đi qua đúng một lần.
Dữ liệu vào
Dòng đầu 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 — số chuỗi.
- Dòng thứ hai chứa số nguyên .
- Dòng thứ ba chứa số nguyên với và khi .
- Dòng thứ tư chứa số nguyên với và khi .
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra trên một dòng độ dài chu trình đơn dài nhất trong đồ thị tương ứng.
Ràng buộc
- Tổng qua tất cả bộ dữ liệu không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 4 3 4 3 3 -1 1 2 2 -1 2 2 3 2 5 6 -1 5 -1 1 3 3 5 2 -1 1 1 -1 3 5 |
7 11 8 |
Bộ 1: chu trình đơn dài nhất có độ dài , tận dụng chuỗi và chuỗi (đi vào chuỗi ở đỉnh , ra ở đỉnh , đóng chu trình qua hai đỉnh nối ở chuỗi ). Không thể mở rộng thêm sang chuỗi vì sẽ phá tính đơn của chu trình. Bộ 2: chu trình duy nhất có độ dài — đi hết toàn bộ hai chuỗi. Bộ 3: đáp án là . |
| 1 3 3 3 3 -1 1 1 -1 3 3 |
8 | Chu trình tối ưu đi qua toàn bộ ba chuỗi: dùng cả đỉnh của chuỗi , đỉnh của chuỗi và đỉnh của chuỗi , kết hợp cạnh nối — tổng cộng cạnh. |
Bình luận