Câu lạc bộ theo tên
Xem dạng PDF📖 Bài giảng & lời giải: đây là Bài tập 2 trong bài giảng Bài 30: DSU và cây khung trên blog Lập trình thuật toán – có lý thuyết, mô phỏng từng bước, gợi ý và code C++ / Python.
⚠️ Lưu ý: hãy đảm bảo em đã thật sự cố gắng tự làm bài trước, rồi mới xem gợi ý và lời giải nhé!
🎓 Khóa học Lập trình Thuật toán thi đấu của thầy Nguyễn Việt Nam Sơn – 111 buổi video, kèm cặp cá nhân, luyện thi chuyên Tin · HSG Tin học · Tin học trẻ · đội tuyển quốc gia · Olympic/ICPC. 👉 Xem chi tiết khóa học · Thành tích học viên
📞 Đăng ký học: Zalo 0767 666 702 · Facebook Nguyễn Việt Nam Sơn · 🌐 laptrinhthuattoan.blogspot.com
Có $q$ sự kiện xảy ra lần lượt, mỗi sự kiện là một dòng thuộc một trong hai dạng:
union a b: hai người tên $a$ và $b$ vào chung một câu lạc bộ (nếu họ đang ở hai câu lạc bộ khác nhau thì hai câu lạc bộ đó hợp nhất thành một);ask a b: hỏi hai người tên $a$ và $b$ hiện có cùng câu lạc bộ hay không.
Người chưa xuất hiện trong sự kiện union nào thì đứng một mình một câu lạc bộ. Mỗi người luôn cùng câu lạc bộ với chính mình.
Dữ liệu vào
- Dòng 1: số nguyên $q$ ($1 \le q \le 2 \cdot 10^5$).
- $q$ dòng tiếp theo, mỗi dòng là một sự kiện như trên. Tên gồm các chữ cái Latin thường, độ dài từ 1 tới 20.
Kết quả
Với mỗi sự kiện ask, in trên một dòng YES nếu hai người cùng câu lạc bộ, ngược lại in NO. Dữ liệu bảo đảm có ít nhất một sự kiện ask.
Sample Input
6
union an binh
union binh chi
ask an chi
ask an dung
union dung em
ask em dung
Sample Output
YES
NO
YES
Bình luận