#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int s[N], p[N];
int find(int x)
{
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
void merge(int a, int b)
{
int x = find(a), y = find(b);
p[x] = y;
}
void query(int a, int b)
{
if (find(a) == find(b))
puts("Yes");
else
puts("No");
}
int main()
{
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i ++)
{
p[i] = i;
}
while (m --)
{
string op;
int a, b;
cin >> op >> a >> b;
if (op == "M")
{
merge(a, b);
}
if (op == "Q")
{
query(a, b);
}
}
}
相关文章
- 07-23linq查询集合并分页展示数据
- 07-23[opencv]拼接合并轮廓集合mergeContours
- 07-23多目标遗传算法 ------ NSGA-II (部分源码解析)父、子种群合并 merge.c
- 07-23设子数组A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1)。试设计一个合并这2个子数组为排好序的数组A[0:N-1]的算法。
- 07-23备份一个集合分组的算法
- 07-23【虾皮面试手撕算法】:合并两个有序链表
- 07-23python算法双指针问题:两个有序数组的合并
- 07-23『Python CoolBook』数据结构和算法_字典比较&字典和集合
- 07-23python 集合并集
- 07-23算法:合并两个有序链表