Nối các danh sách liên kết đôi
Đề bài
Mô tả
Danh sách liên kết đôi là một cấu trúc dữ liệu cơ bản: một dãy các phần tử, mỗi phần tử biết phần tử đứng trước và phần tử đứng sau nó trong danh sách. Trong bài này mọi danh sách đều có cấu trúc tuyến tính (không tạo thành chu trình): mỗi phần tử trừ phần tử đầu có đúng một phần tử liền trước, mỗi phần tử trừ phần tử cuối có đúng một phần tử liền sau.
Cho ô nhớ, đánh số từ đến , tạo thành một hoặc nhiều danh sách liên kết đôi. Với mỗi ô cho hai giá trị:
- — ô chứa phần tử liền trước phần tử ở ô ;
- — ô chứa phần tử liền sau phần tử ở ô .
Nếu phần tử ở ô không có phần tử liền trước thì ; nếu không có phần tử liền sau thì .
Hãy nối tất cả các danh sách đã cho thành một danh sách duy nhất, ghép chúng lại với nhau theo thứ tự tùy ý. Nếu dữ liệu vào vốn đã là một danh sách duy nhất thì không cần làm gì cả.
Thao tác duy nhất được phép là nối đầu của một danh sách vào cuối của một danh sách khác — nghĩa là không được đảo ngược hay tách nhỏ các danh sách ban đầu; mọi liên kết bên trong mỗi danh sách ban đầu phải được giữ nguyên.
In ra danh sách kết quả dưới dạng các giá trị . Nếu có nhiều đáp án hợp lệ, in ra bất kỳ đáp án nào.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số ô nhớ.
- dòng tiếp theo, dòng thứ chứa hai số nguyên .
Dữ liệu ra
In dòng, dòng thứ chứa hai số nguyên — ô liền trước và ô liền sau của ô sau khi đã nối tất cả các danh sách thành một danh sách duy nhất.
Ràng buộc
- Dữ liệu vào luôn mô tả đúng một hoặc nhiều danh sách liên kết đôi có cấu trúc tuyến tính; mỗi ô nhớ chứa đúng một phần tử của một danh sách nào đó.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 7 4 7 5 0 0 0 6 1 0 2 0 4 1 0 |
4 7 5 6 0 5 6 1 3 2 2 4 1 0 |
Dữ liệu vào gồm ba danh sách: , và . Đáp án nối chúng thành một danh sách duy nhất, chẳng hạn . Mọi liên kết bên trong từng danh sách ban đầu vẫn được giữ nguyên. |
| 5 2 0 0 1 0 4 3 5 4 0 |
2 3 0 1 1 4 3 5 4 0 |
Hai danh sách và được nối thành . |
Bình luận