--- author: little tags: Đường truyền quan trọng title: Đường truyền quan trọng Solution --- $\Huge\text{Đường truyền quan trọng Solution}$ ------- :::info 📌 Tags: `dfs` `dp` ✍️ Writer: little 📋 Content: [TOC] ::: ----- ## Thuật toán Ta có nhận xét : một đường truyền chỉ có thể là đường truyền quan trọng nếu khi xóa bỏ đường truyền đó thì hệ thống mạng bị chi rẽ thành $2$ phần. Hay nói cách khác, một đường truyền chỉ có thể là đường truyền quan trọng nếu nó là cạnh cầu của đồ thị. - Trong khi tìm cạnh cầu thì ta lưu lại cây $Dfs$ đó luôn. - Gọi : - $dp1_u$ là số lượng đỉnh cung cấp dịch vụ $A$ trong cây con gốc $u$. - $dp2_u$ là số lượng đỉnh cung cấp dịch vụ $B$ trong cây con gốc $u$. - Với mỗi cạnh cầu $(u,v)$ ($v$ là đỉnh nằm thấp hơn $u$ trong cây $Dfs$) trong đồ thị đã cho, thì nó chỉ có thể là đường truyền quan trọng nếu như thỏa mãn một trong các điều kiện sau: - $dp1_v = 0$ (thành phần liên thông chứa đỉnh $v$ không có dịch vụ $A$). - $dp1_v = K$ (thành phần liên thông chứa đỉnh $u$ không có dịch vụ $A$). - $dp2_v = 0$ (thành phần liên thông chứa đỉnh $v$ không có dịch vụ $B$). - $dp2_v = L$ (thành phần liên thông chứa đỉnh $u$ không có dịch vụ $B$). Độ phức tạp bài toán: $O(n + m)$. ---- Tham khảo code ở [đây](https://ideone.com/8MK6tc)