Đồ Thị Động
Xem dưới dạng PDF
Gửi bài giải
Điểm:
20
Giới hạn thời gian:
3.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Nhóm nghiên cứu mạng tại FPTU xây dựng hệ thống giám sát liên thông cho đồ thị vô hướng \(N\) đỉnh, ban đầu không có cạnh nào.
Hệ thống nhận \(Q\) thao tác tuần tự:
add u v— Thêm cạnh không có hướng \((u, v)\) vào đồ thị. Đảm bảo cạnh \((u,v)\) chưa tồn tại tại thời điểm này.remove u v— Xóa cạnh \((u, v)\) khỏi đồ thị. Đảm bảo cạnh \((u,v)\) đang tồn tại.query u v— InYESnếu \(u\) và \(v\) hiện đang liên thông,NOnếu không.
Toàn bộ \(Q\) thao tác được đọc trước (offline). Mỗi cạnh sau khi thêm sẽ tồn tại cho đến khi bị xóa, và mỗi cạnh chỉ bị xóa đúng một lần.
Gợi ý: Xác định khoảng thời gian \([add, remove)\) của mỗi cạnh, sau đó áp dụng D&C trên thời gian + DSU Rollback.
Định dạng đầu vào
- Dòng 1: Hai số nguyên \(N\) và \(Q\) (\(1 \le N, Q \le 10^5\)).
- \(Q\) dòng tiếp theo, mỗi dòng là một thao tác (
add u v,remove u v, hoặcquery u v).
Định dạng đầu ra
Với mỗi query u v, in YES hoặc NO trên một dòng riêng.
Ví dụ
Input:
5 8
add 1 2
add 2 3
query 1 3
add 1 3
query 1 3
remove 1 2
query 1 3
query 2 4
Output:
YES
YES
YES
NO
Giải thích:
- Thêm 1–2, 2–3: tồn tại đường 1→2→3.
query 1 3→YES.- Thêm 1–3: thêm cạnh trực tiếp 1–3 (cạnh dư, tạo chu trình).
query 1 3→YES.- Xóa 1–2: còn cạnh 2–3 và 1–3. Đường 1→3→2 vẫn tồn tại.
query 1 3→ cạnh 1–3 trực tiếp →YES.query 2 4→ đỉnh 4 không có cạnh nào →NO.
Ràng buộc
| Nhóm | \(N\) | \(Q\) |
|---|---|---|
| 1 (30%) | \(\le 10^3\) | \(\le 10^3\) |
| 2 (70%) | \(\le 10^5\) | \(\le 10^5\) |
\(1 \le u, v \le N\), \(u \ne v\).
Nhận xét