#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<cmath> #include<queue> #include<vector> using namespace std; #define maxn 200005 int a1,a2,a3,f[maxn],n,m; int getf(int o){ //找祖宗 if (f[o]==o)return o; else return f[o]=getf(f[o]);//路径压缩 } void merge(int v,int u){ //合并子集 int t1,t2; t1=getf(v); t2=getf(u); if(t1!=t2)f[t2]=t1; return; } void find(int v,int u) { int t1,t2; t1=getf(v); t2=getf(u); if (t1==t2)printf("Y "); else printf("N "); } int main(){ scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) f[i]=i; for(int i=1;i<=m;i++){ scanf("%d %d %d",&a1,&a2,&a3); if(a1==1) merge(a2,a3); else find(a2,a3); } return 0; }