![]()
1 #include <iostream>
2
3 using namespace std;
4
5 const int MAXN=10010;
6
7 int n,m;
8 int head[MAXN];
9
10 int root(int x) //寻找根
11 {
12 if (head[x]==x) return x;
13 else return head[x]=root(head[x]);
14 }
15
16 int main()
17 {
18 cin>>n>>m;
19 for (int i=1;i<MAXN;i++) head[i]=i; //init
20
21 int z,x,y;
22 for (int i=1;i<=m;i++)
23 {
24 cin>>z>>x>>y;
25 if (z==1) head[root(x)]=root(y); //合并Union
26 else
27 {
28 if (root(x)==root(y)) cout<<'Y'<<endl; //查询
29 else cout<<'N'<<endl;
30 }
31 }
32 return 0;
33 }