trang chủ / đề bài / gr10_union

Hợp nhóm và kiểm tra

Đề bài

Mô tả

Có n học sinh đánh số từ 1 đến n, ban đầu mỗi học sinh ở một nhóm riêng. Lần lượt xảy ra q sự kiện, mỗi sự kiện thuộc một trong hai loại:

  • 1 u v: nhóm chứa học sinh u và nhóm chứa học sinh v gộp lại thành một nhóm (nếu hai học sinh đã cùng nhóm thì không có gì thay đổi).
  • 2 u v: hỏi tại thời điểm này học sinh u và học sinh v có cùng nhóm hay không.

Hãy trả lời tất cả các câu hỏi.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n, q.
  • q dòng tiếp theo, mỗi dòng chứa ba số nguyên t,u,v mô tả một sự kiện.

Dữ liệu ra

Với mỗi sự kiện loại 2, theo thứ tự xuất hiện, in ra trên một dòng YES nếu u và v cùng nhóm, ngược lại in ra NO.

Ràng buộc

  • 1≤n≤105
  • 1≤q≤2·105
  • t∈{1,2}, 1≤u,v≤n (có thể có u=v)
  • Có ít nhất một sự kiện loại 2.

Ví dụ

Input Output Giải thích
5 6
2 1 2
1 1 2
1 3 2
2 1 3
2 1 4
2 4 4
NO
YES
NO
YES
Sau hai lần gộp, nhóm {1,2,3} được tạo thành; học sinh 4 vẫn ở một mình nhưng luôn cùng nhóm với chính mình.
4 5
1 1 2
1 3 4
2 2 3
1 2 4
2 1 3
NO
YES
Trước lần gộp thứ ba, {1,2} và {3,4} là hai nhóm khác nhau. Gộp nhóm của 2 với nhóm của 4 thì cả bốn học sinh vào chung một nhóm.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0