Đồ thị sắp xếp nổi bọt
Đề bài
Mô tả
Cho một hoán vị của các số từ đến .
Ta xây dựng một đồ thị vô hướng gồm đỉnh, được đánh số từ đến (đỉnh mang giá trị của phần tử, không phải vị trí), ban đầu không có cạnh nào. Các cạnh được thêm vào trong quá trình chạy thuật toán sắp xếp nổi bọt trên dãy :
repeat
swapped = false
for i = 1 to N - 1:
if a[i] > a[i + 1]:
thêm cạnh vô hướng giữa hai đỉnh a[i] và a[i + 1]
đổi chỗ a[i] và a[i + 1]
swapped = true
until swapped == false
Một tập độc lập của là một tập các đỉnh mà không có hai đỉnh nào trong đó được nối với nhau bằng một cạnh.
Hãy tìm kích thước của tập độc lập lớn nhất của .
Dữ liệu vào
- Dòng đầu chứa số nguyên .
- Dòng thứ hai chứa số nguyên đôi một phân biệt .
Dữ liệu ra
Một số nguyên duy nhất: kích thước của tập độc lập lớn nhất của .
Ràng buộc
- , các đôi một phân biệt
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 3 1 2 |
2 | Thuật toán đổi chỗ và , thêm cạnh , dãy thành . Sau đó đổi chỗ và , thêm cạnh , dãy đã sắp xếp. Đồ thị có hai cạnh và , tập độc lập lớn nhất là . |
| 5 4 2 1 3 5 |
3 | Đồ thị nhận được có các cạnh . Một tập độc lập lớn nhất là (hoặc ). |
| 3 3 2 1 |
1 | Mọi cặp đỉnh đều được nối với nhau, nên tập độc lập lớn nhất chỉ có một đỉnh. |
Bình luận