report VI VI EN
Register | Login
  • HOME
  • PROBLEMSET
  • ROADMAP
  • COMPETITION
  • TOPIC
  • RANKING
  • GUIDE
  • MASHUP
  • ABOUT
  • CONTACT
Solutions of Library - FlandreOJ: Flandre Online Judge

Solutions of Library

Select solution language

Write solution here.


User Avatar TENJOKE    Created at    4 likes

Ta có **nhánh** là các nhánh khác nhau phân ra từ đỉnh $1$. Gọi $\min(x, y)$ là cái cạnh nhỏ nhất trên đường đi từ $x \rightarrow y$. Đầu tiên mình phải phân ra là mỗi đỉnh ở nhánh thứ mấy, sort truy vấn theo nhánh. Với từng nhánh kiếm LCA (tạm gọi là $\text{belan}$) của tất cả các đỉnh trong nhánh. Mình sẽ chắn một tấm duy nhất là $\min(\text{belan}, 1)$ hoặc nhiều tấm là $\sum \min(x(i), \text{belan})$ với $x(i)$ là mỗi đỉnh thuộc nhánh, cái nào nhỏ hơn thì mình lấy: $$ \text{ans} += \min(\min(\text{belan}, 1), \sum \min(x(i), \text{belan})) $$ Trường hợp đặc biệt là nếu có một cái $x(i) == \text{belan}$ thì mình sẽ lấy luôn là $$ \text{ans} += \min(\text{belan}, 1) $$ **:)** **Chúc các bạn thành công !**