$\huge \color{orange}{成仙之路->}$ $\huge \color{purple}{算法基础课题解}$
思路:
并查集模板:通过递归直到找到该数的根节点为止,根节点就是该集合区分其他集合的标志
完整代码
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int n,m;
int p[N];
//找到根节点
int find(int x)
{
if(p[x]!=x) p[x]=find(p[x]);
return p[x];
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) p[i]=i;
while(m--)
{
char op;
int a,b;
cin>>op>>a>>b;
//集合合并
if(op=='M') p[find(a)]=find(b);
//查询
if(op=='Q') cout<<(find(a)==find(b)?"Yes":"No")<<endl;
}
return 0;
}