|
- #include<cstdio>
- int n,m,z,x,y;
- int f[10000+100];
- int getf(int child)
- {
- if(f[child]==child)
- {
- return child;
- }
- else
- {
- f[child]=getf(f[child]);
- return f[child];
- }
- }
- void merge(int father,int son)
- {
- int t1=getf(father);
- int t2=getf(son);
- if(t1!=t2)
- {
- f[t2]=t1;
- }
- }
- 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",&z);
- if(z==1)
- {
- scanf("%d%d",&x,&y);
- merge(x,y);
- }
- if(z==2)
- {
- scanf("%d%d",&x,&y);
- if(getf(f[x])==getf(f[y]))
- {
- printf("Y\n");
- }
- else
- {
- printf("N\n");
- }
- }
- }
- return 0;
- }
复制代码 |
|