#P1019. 学校朋友圈
学校朋友圈
题目描述
新学期开始,学校有 名学生,学生编号为 到 。
一开始,大家互相都不认识。
接下来会发生 个事件,事件分为两类:
1 a b:学生 和学生 成为了朋友;2 a b:询问学生 和学生 是否在同一个“朋友圈”中。
已知朋友关系具有传递性:
- 如果 和 是朋友, 和 是朋友,那么 和 也是朋友,所有的朋友在同一个朋友圈中。
也就是说,“朋友圈”是一个由朋友关系连接起来的学生集合。
请你设计一个数据结构,快速支持以下操作:
- 合并两个朋友圈;
- 判断两个学生是否在同一个朋友圈中。
输入格式
第一行包含两个整数 和 ,分别表示学生人数和事件数量。
接下来 行,每行包含三个整数 ,表示一个事件:
- 若 ,表示学生 和学生 成为了朋友;
- 若 ,表示询问学生 和学生 是否在同一个朋友圈中。
输入保证:
- ;
- 只会是 或 。
输出格式
对于每一个 的询问,输出一行:
- 如果学生 和学生 在同一个朋友圈中,输出
YES; - 否则,输出
NO。
输出顺序应与输入中询问出现的顺序一致。
样例
5 7
1 1 2
2 1 2
1 2 3
2 1 3
2 1 4
1 4 5
2 4 5
YES
YES
NO
YES
样例 1 解释
初始时,每个学生各自在一个朋友圈中:
{1}, {2}, {3}, {4}, {5}
执行事件:
1 1 2:学生 1 和学生 2 成为朋友,朋友圈变为{1, 2}。2 1 2:学生 1 和学生 2 在同一个朋友圈,输出YES。1 2 3:学生 2 和学生 3 成为朋友,朋友圈变为{1, 2, 3}。2 1 3:学生 1 和学生 3 在同一个朋友圈,输出YES。2 1 4:学生 1 和学生 4 不在同一个朋友圈,输出NO。1 4 5:学生 4 和学生 5 成为朋友,朋友圈变为{4, 5}。2 4 5:学生 4 和学生 5 在同一个朋友圈,输出YES。
数据范围
对于 的数据:
对于 的数据:,,,