Gửi bài giải
Điểm:
0,01 (OI)
Giới hạn thời gian:
0.5s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch
Để xây dựng cấu trúc dữ liệu disjoint sets union, bạn cần phải thực hiện ~2~ loại truy vấn sau:
union ~u~ ~v~ — gộp hai tập hợp lần lượt chứa ~u~ và ~v~.
get ~u~ ~v~ — kiểm tra ~u~ và ~v~ có thuộc cùng một tập hợp hay không.
Input
Dòng đầu tiên gồm hai số nguyên ~n~ và ~m~ (~1 \le n,m \le 10^5~) — lần lượt là số lượng phần tử và số lượng truy vấn. ~m~ dòng tiếp theo là các truy vấn, mỗi truy vấn ghi trên một dòng.
Truy vấn union có dạng: union ~u~ ~v~ (~1 \le u,v \le n~).
Truy vấn get có dạng: get ~u~ ~v~ (~1 \le u, v \le n~).
Output
In ra kết quả của mỗi truy vấn get trên một dòng theo thứ tự: "YES", nếu các phần tử thuộc cùng một tập hợp, và ngược lại in ra "NO".
Scoring
Subtask | Điểm | Ràng buộc |
---|---|---|
~1~ | ~50\%~ | ~1 \leq n,m \leq 5 \times 10^3~ |
~2~ | ~50\%~ | Không có ràng buộc gì thêm |
Sample Input 1
4 4
union 1 2
union 1 3
get 1 4
get 2 3
Sample Output 1
NO
YES
Bình luận