---
# System prepended metadata

title: Đường truyền quan trọng Solution
tags: [...]

---

---
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)