并查集模板。。。有些语句十分神奇,能够一句话完成一个操作。。
如果你不会并查集算法的话,可以去网上搜一下。。。
include
using namespace std;
int n,m,z,x,y,fa[100010];
int getfa(int x){return x==fa[x]?x:fa[x]=getfa(fa[x]);} //压缩版的getfather函数。。。加了优化(路径压缩)
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)fa[i]=i;// 初始所有点的father都是自己
for(int i=1;i<=m;i++){
scanf("%d%d%d",&z,&x,&y);
if(z==1){fa[getfa(x)]=getfa(y);}//压缩,神奇
else{
if(getfa(x)==getfa(y)) puts("Y");//判断祖先相不相同,如果相同,则是同一集合内的,输出Y
else puts("N");
}
}
return 0;
}