Editorial for Chạy bộ
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Tóm tắt bài toán:
- Cho một cây bao gồm
đỉnh và
cạnh. Đếm số lượng đường đi dài nhất trên cây đã cho.
Nhận xét:
- Chọn một đỉnh bất kỳ để làm gốc của cây.
- Xét đỉnh
và cây con gốc
:
- Xét một đỉnh
bất kỳ nằm trong cây con gốc
, tập các đường đi
bắt đầu từ đỉnh
sẽ bao gồm đường đi
.
- Xét hai đỉnh
,
bất kỳ nằm ở hai nhánh khác nhau của cây con gốc
, tập các đường đi
đi qua
sẽ bao gồm đường đi
.
- Xét một đỉnh
- Tập tất cả các đường đi trong cây ban đầu là hợp của tất cả tập các đường đi
chứa đỉnh
trong cây con gốc
.
- Và
với
, tức hai tập đường đi bất kỳ không chứa hai đường đi giống nhau.

- Như trong hình trên, giả sử ta chọn đỉnh
là đỉnh gốc của cây.
- Tập các đường đi
chứa đỉnh
trong cây con gốc
là:
.
.
.
.
.
- Tập các đường đi
chứa đỉnh
trong cây con gốc
là:
.
.
.
.
- Tập các đường đi
chứa đỉnh
trong cây con gốc
là:
.
.
.
.
- Tập các đường đi
chứa đỉnh
trong cây con gốc
là:
.
- Tập các đường đi
chứa đỉnh
trong cây con gốc
là:
.
- Tập các đường đi
- Tập tất cả đường đi trên cây ban đầu là hợp của tất cả tập các đường trên, tức là
.
- Và
với
.
Thuật toán:
- Từ nhận xét trên, ta chỉ cần đếm số lượng đường đi dài nhất trong các tập
.
- Để thực hiện bài toán trên, ta sử dụng kỹ thuật quy hoạch động trên cây như sau:
- Gọi
là độ sâu tối đa của cây con gốc
và
là số lượng đường đi bắt đầu từ đỉnh
trong
có độ dài bằng
.
- Ta có thể tính các giá trị
và
bằng DFS trong độ phức tạp
.
- Với mỗi đỉnh
:
- Nếu
chỉ có một nhánh thì độ dài và số lượng đường đi dài nhất trong
là
và
.
- Nếu
có hai nhánh trở lên thì độ dài đường đi dài nhất trong
là
với
,
là hai đỉnh con trực tiếp bất kỳ của
. Với trường hợp này, ta có thể tính toán độ dài và số lượng đường đi dài nhất trong độ phức tạp
hoặc
với
là số lượng đỉnh con trực tiếp của
.
- Nếu
- Gọi
- Độ phức tạp:
hoặc
.
Comments