Ngay cả công ty thành công nhất cũng có thể trải qua giai đoạn khủng hoảng khi bạn phải đưa ra quyết định khó khăn — tái cấu trúc, loại bỏ và sáp nhập các phòng ban, sa thải nhân viên và làm những việc khó chịu khác. Hãy cùng xem xét mô hình công ty sau đây.
Có ~n~ người làm việc cho một công ty phần mềm lớn. Mỗi người thuộc một phòng ban nào đó. Ban đầu, mỗi người làm việc cho dự án của riêng mình trong phòng ban của mình (do đó, công ty ban đầu bao gồm ~n~ phòng ban, mỗi phòng ban có một người).
Tuy nhiên, thời điểm khó khăn đã đến với công ty và ban quản lý phải thuê một người quản lý khủng hoảng để xây dựng lại quy trình làm việc nhằm tăng hiệu quả. Chúng ta hãy sử dụng nhóm (người) để đại diện cho một nhóm mà một số người cùng làm việc. Người quản lý khủng hoảng có thể đưa ra hai loại quyết định:
Gộp phòng ban của nhóm ( ~x~ ) và nhóm ( ~y~ ) thành một phòng ban lớn chứa tất cả nhân viên của nhóm ( ~x~ ) và nhóm ( ~y~ ), trong đó ~x~ và ~y~ (~1 \le x \le y \le n~) — là số của hai nhân viên trong một công ty. Nếu nhóm ( ~x~ ) khớp với nhóm ( ~y~ ) , thì không có gì xảy ra.
Gộp các phòng ban nhóm ( ~x~ ), nhóm ( ~x + 1~ ), ..., nhóm ( ~y~ ) , trong đó ~x~ và ~y~ (~1 \le x \le y \le n~) — là số của hai nhân viên trong một công ty.
Lúc đó, người quản lý khủng hoảng đôi khi có thể tự hỏi liệu nhân viên ~x~ và ~y~ (~1 \le x \le y \le n~) có làm việc cùng một phòng ban hay không.
Hỗ trợ người quản lý khủng hoảng và trả lời mọi thắc mắc của họ.
Input
Dòng đầu tiên của dữ liệu đầu vào chứa hai số nguyên ~n~ và ~q~ (~1 \le n \le 200 000~, ~1 \le q \le 500 000~) — số lượng nhân viên của công ty và số lượng truy vấn mà người quản lý khủng hoảng có.
Các dòng q tiếp theo chứa các truy vấn của người quản lý khủng hoảng. Mỗi truy vấn trông giống như loại ~x~ ~y~, trong đó ~1 \le \textit{loại} \le 3~. Nếu loại = 1 hoặc loại = 2 , thì truy vấn biểu thị quyết định của người quản lý khủng hoảng về việc sáp nhập các phòng ban của loại thứ nhất và loại thứ hai tương ứng. Nếu loại = 3 , thì nhiệm vụ của bạn là xác định xem nhân viên ~x~ và ~y~ có làm việc tại cùng một phòng ban hay không. Lưu ý rằng ~x~ có thể bằng ~y~ trong truy vấn của bất kỳ loại nào.
Output
Đối với mỗi câu hỏi loại 3 , hãy in "YES" hoặc "NO" (không có dấu ngoặc kép), tùy thuộc vào việc những người tương ứng có làm việc trong cùng một phòng ban hay không.
Scoring
Subtask | Điểm | Giới hạn |
---|---|---|
1 | ~20\%~ | ~n, q \le 1000~ |
2 | ~20\%~ | không có truy vấn loại 1 |
3 | ~20\%~ | không có truy vấn loại 2 |
4 | ~20\%~ | các truy vấn loại 3 sau tất cả truy vấn loại 1 và 2 |
5 | ~20\%~ | không có ràng buộc gì thêm |
Sample Input 1
8 6
3 2 5
1 2 5
3 2 5
2 4 7
2 1 2
3 1 7
Sample Output 1
NO
YES
YES
Sample Input 2
7 7
1 2 3
2 4 6
3 5 6
3 4 3
2 1 2
1 6 3
3 6 1
Sample Output 2
YES
NO
YES
Bình luận