AcWing 836. 合并集合
原题链接
简单
作者:
Orangetao
,
2021-03-15 20:52:22
,
所有人可见
,
阅读 257
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int p[N];// p[i] 表示 i 这个数的 父节点指针
int find(int x)
{
if(p[x] != x) p[x] = find(p[x]) ;
return p[x] ;
}
int main()
{
int n , m ;
cin >> n >> m ;
for(int i = 1 ; i <= n ; i ++) p[i] = i ;
string a;
int x , y;
while( m -- )
{
cin >> a >> x >> y;
int x_root = find(x);
int y_root = find(y);
if( a == "M")
{
if( x_root != y_root ) p[x_root] = y_root ;
}else
{
if( x_root == y_root ) cout << "Yes" << endl;
else cout << "No" << endl;
}
}
}