#include<algorithm>
#include<iostream>
using namespace std;
const int N=1e5+10;
int p[N];//p[x]代表x的父节点
int n,m;
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;//把p[i]的祖先节点设为i
}
while(m--)
{
string s;
int a,b;
cin>>s>>a>>b;
if(s=="M")
{
p[find(a)]=find(b);//a的祖先节点的父节点为b的祖先节点
}
else
{
if(find(a)==find(b))//a和b的祖先节点是否相等
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
return 0;
}
AcWing 836. 合并集合
最新推荐文章于 2024-05-29 15:53:26 发布