Định nghĩa cây
Một cây là một đồ thị vô hướng liên thông không chứa chu trình. Tức là, cây là một đồ thị \(G = (V, E)\) thỏa mãn các điều kiện sau:
- \(G\) liên thông, tức là luôn có đường đi giữa hai đỉnh bất kỳ.
- \(G\) không chứa chu trình, tức là không có tập con của các cạnh tạo thành một đường khép kín.
Tính chất của cây
Một cây với \(n\) đỉnh (\(n \geq 1\)) có các tính chất sau:
- Cây có đúng \(n-1\) cạnh.
- Giữa hai đỉnh bất kỳ trong cây luôn tồn tại duy nhất một đường đi.
- Thêm một cạnh bất kỳ vào cây sẽ tạo thành đúng một chu trình.
- Loại bỏ một cạnh bất kỳ khỏi cây sẽ làm đồ thị không còn liên thông.
Ứng dụng của cây
Cây có nhiều ứng dụng quan trọng trong tin học và toán học:
- Cấu trúc dữ liệu: Cây nhị phân tìm kiếm, cây AVL, cây đỏ-đen.
- Mạng máy tính: Mô hình phân cấp mạng.
- Hệ thống tệp: Cấu trúc thư mục trong hệ điều hành.
- Nén dữ liệu: Cây Huffman.
Bài toán
Cho đồ thị có dạng một cây có \(n\) đỉnh có gốc của cây là đỉnh \(1\). Hãy trả lời các câu hỏi sau :
- Câu hỏi \(1\) : Với mỗi \(x\) từ \(1\) đến \(n\), hãy in ra cha của \(x\) trên cây. Nếu \(x\) là gốc của cây thì in ra chính nó.
- Câu hỏi \(2\) : Tìm khoảng cách từ gốc của cây đến tất cả các đỉnh trên cây.
- Câu hỏi \(3\) : In ra tất cả các đỉnh lá của cây (theo thứ tự tăng dần chỉ số).
- Câu hỏi \(4\) : Với mỗi \(x\) từ \(1\) đến \(n\), hãy in ra số lượng đỉnh trong cây con gốc \(x\).
Input
Dòng đầu tiên là hai số nguyên dương \(n\) và \(t\). \(n\) là số đỉnh của cây và \(t\) là chỉ số câu hỏi. \((1 \leq n \leq 500, 1 \leq t \leq 4)\).
\(n - 1\) dòng tiếp theo, mỗi dòng là hai số nguyên dương \(u\) và \(v\), là cạnh của cây.
Output
Với câu hỏi in ra tương ứng, xem test ví dụ để hiểu rõ hơn.
Example
Test 1
Input
5 1
1 2
1 3
2 4
2 5
Output
1 1 1 2 2
Test 2
Input
5 2
1 2
1 3
2 4
2 5
Output
0 1 1 2 2
Test 3
Input
5 3
1 2
1 3
2 4
2 5
Output
3 4 5
Test 4
Input
5 4
1 2
1 3
2 4
2 5
Output
5 3 1 1 1
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.