Ideas para resolver problemas
Y verifique las preguntas de la plantilla, use la combinación anterior.M e r g e función para lograr la fusión de conjuntos yencontrar buscarLa función f i n d encuentra los elementos representativos del conjunto y usa si los elementos representativos de los dos elementos son iguales para juzgar si están en el mismo conjunto Tanto la compresión de ruta como la fusión de rangos pueden pasar esta pregunta.
Código
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<bitset>
using namespace std;
int n,m,z,x,y,fa[10010];
int find(int x){
if(fa[x]!=x)
return fa[x]=find(fa[x]);//路径压缩
else return fa[x];
}
void merge(int x,int y){
int xx=find(x),yy=find(y);
if(xx!=yy)
fa[xx]=yy;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&z,&x,&y);
if(z==1)
merge(x,y);
if(z==2)
{
if(find(x)==find(y))
printf("Y\n");
else printf("N\n");
}
}
}