Tree Merging
Đề bài
Mô tả
Bessie viết một trình hiển thị cây có gốc, trong đó mỗi nút mang một giá trị và các giá trị đôi một khác nhau. Trình hiển thị chỉ hỗ trợ duy nhất một thao tác: phép gộp.
Một phép gộp chọn hai nút khác nhau đang có cùng cha và thay chúng bằng một nút duy nhất. Nút mới mang giá trị bằng giá trị lớn hơn trong hai nút được chọn, và nhận tất cả các con của cả hai nút làm con của nó. Gốc của cây không bao giờ tham gia phép gộp (gốc không có cha).
Cho cây ban đầu gồm nút mang các giá trị và cây cuối gồm nút, hãy tìm một dãy phép gộp biến cây ban đầu thành đúng cây cuối.
Dữ liệu vào
- Dòng đầu: số nguyên , số test case.
- Với mỗi test case:
- Dòng chứa , số nút của cây ban đầu.
- dòng, mỗi dòng hai số nguyên và cho biết nút là cha của nút trong cây ban đầu. Nút duy nhất không xuất hiện ở vị trí chính là gốc.
- Dòng chứa , số nút của cây cuối.
- dòng, mỗi dòng hai số nguyên và cho biết nút là cha của nút trong cây cuối.
Giá trị các nút của cây cuối là một tập con của , và gốc của cây cuối trùng với gốc của cây ban đầu.
Dữ liệu ra
Với mỗi test case, in ra:
- Dòng đầu: số phép gộp .
- dòng tiếp theo, mỗi dòng hai số và : gộp hai nút đang mang giá trị và . Tại thời điểm thực hiện, hai nút này phải khác nhau, còn tồn tại và có cùng cha. Nút thu được mang giá trị .
Mỗi phép gộp làm số nút giảm đúng , nên luôn có . Có thể có nhiều dãy phép gộp hợp lệ, in ra dãy nào cũng được.
Ràng buộc
- Tổng của tất cả test case trong một file dữ liệu không vượt quá
- Dữ liệu đảm bảo luôn tồn tại ít nhất một dãy phép gộp hợp lệ
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 1 8 7 5 2 1 4 2 5 1 3 2 8 5 6 2 4 8 5 5 1 6 5 |
4 2 5 3 8 4 8 7 8 |
Cây ban đầu có gốc với hai con ; nút có các con ; nút có các con . Gộp với được nút có các con . Ba phép gộp tiếp theo dồn vào , còn lại cây cuối: gốc , con , và có hai con . |
| 2 3 2 1 3 1 2 3 1 1 1 |
1 2 3 0 |
Test đầu: hai lá cùng cha , gộp lại thành nút . Test sau chỉ có một nút nên không cần phép gộp nào. |
Bình luận