Cho một đồ thị có hướng, xuất ra chu kỳ dài nhất.
Quy tắc
- Bất kỳ định dạng đầu vào hợp lý đều được cho phép (ví dụ: danh sách các cạnh, ma trận kết nối).
- Các nhãn không quan trọng, vì vậy bạn có thể áp đặt bất kỳ hạn chế nào đối với các nhãn mà bạn cần và / hoặc mong muốn, miễn là chúng không chứa thông tin bổ sung không được cung cấp trong đầu vào (ví dụ: bạn không thể yêu cầu các nút theo chu kỳ là được gắn nhãn với số nguyên và các nút khác được gắn nhãn bằng các chuỗi chữ cái).
- Một chu kỳ là một chuỗi các nút được kết nối và không có nút nào được lặp lại, ngoài nút đó là điểm bắt đầu và kết thúc của chu kỳ (
[1, 2, 3, 1]
là một chu kỳ, nhưng[1, 2, 3, 2, 1]
không phải là). - Nếu đồ thị là chu kỳ, chu kỳ dài nhất có độ dài 0 và do đó sẽ mang lại một đầu ra trống (ví dụ: danh sách trống, không có đầu ra nào cả).
- Lặp lại nút đầu tiên ở cuối danh sách các nút trong chu trình là tùy chọn (
[1, 2, 3, 1]
và[1, 2, 3]
biểu thị cùng một chu kỳ). - Nếu có nhiều chu kỳ có cùng độ dài, bất kỳ một hoặc tất cả chúng có thể là đầu ra.
- Nội dung được cho phép, nhưng nếu giải pháp của bạn sử dụng một, bạn được khuyến khích đưa vào một giải pháp thay thế không sử dụng các nội dung tầm thường hóa (ví dụ: một nội dung tạo ra tất cả các chu kỳ). Tuy nhiên, giải pháp thay thế sẽ không được tính vào điểm số của bạn, vì vậy nó hoàn toàn là tùy chọn.
Các trường hợp thử nghiệm
Trong các trường hợp thử nghiệm này, đầu vào được đưa ra dưới dạng danh sách các cạnh (trong đó phần tử đầu tiên là nút nguồn và phần tử thứ hai là nút đích) và đầu ra là danh sách các nút mà không lặp lại nút đầu tiên / cuối cùng.
[(0, 0), (0, 1)] -> [0]
[(0, 1), (1, 2)] -> []
[(0, 1), (1, 0)] -> [0, 1]
[(0, 1), (1, 2), (1, 3), (2, 4), (4, 5), (5, 1)] -> [1, 2, 4, 5]
[(0, 1), (0, 2), (1, 3), (2, 4), (3, 0), (4, 6), (6, 8), (8, 0)] -> [0, 2, 4, 6, 8]
[(0, 0), (0, 8), (0, 2), (0, 3), (0, 9), (1, 0), (1, 1), (1, 6), (1, 7), (1, 8), (1, 9), (2, 1), (2, 3), (2, 4), (2, 5), (3, 8), (3, 1), (3, 6), (3, 7), (4, 1), (4, 3), (4, 4), (4, 5), (4, 6), (4, 8), (5, 0), (5, 8), (5, 4), (6, 0), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6), (6, 7), (6, 9), (7, 0), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 8), (7, 9), (8, 0), (8, 1), (8, 2), (8, 5), (8, 9), (9, 1), (9, 2), (9, 3), (9, 4), (9, 5), (9, 6)] -> [0, 9, 6, 7, 8, 2, 5, 4, 3, 1]
[(0, 0), (0, 2), (0, 4), (0, 5), (0, 7), (0, 9), (0, 11), (1, 2), (1, 4), (1, 5), (1, 8), (1, 9), (1, 10), (2, 0), (2, 1), (2, 3), (2, 4), (2, 5), (2, 6), (3, 0), (3, 1), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (3, 11), (4, 1), (4, 3), (4, 7), (4, 8), (4, 9), (4, 10), (4, 11), (5, 0), (5, 4), (5, 6), (5, 7), (5, 8), (5, 11), (6, 0), (6, 8), (6, 10), (6, 3), (6, 9), (7, 8), (7, 9), (7, 2), (7, 4), (7, 5), (8, 8), (8, 9), (8, 2), (8, 4), (8, 7), (9, 0), (9, 1), (9, 2), (9, 3), (9, 6), (9, 10), (9, 11), (10, 8), (10, 3), (10, 5), (10, 6), (11, 2), (11, 4), (11, 5), (11, 9), (11, 10), (11, 11)] -> [0, 11, 10, 6, 9, 3, 8, 7, 5, 4, 1, 2]