# 并查集模板

 #include <bits/stdc++.h>
 using namespace std;
 const int N=10001;
 int fa[N],n,m;
 int find(int x)
 {
     if(fa[x]==x)
     return x;
     fa[x]=find(fa[x]);
     return fa[x];
 }
 void hb(int a,int b)
 {
     int faa=find(a),fab=find(b);
     if(faa!=fab)
     fa[fab]=faa;
     return;
 }
 int main()
 {
     scanf("%d %d",&n,&m);
     for(int i=1;i<=n;i++)
     fa[i]=i;
     for(int i=1;i<=m;i++)
     {
         int op,x,y;
         scanf("%d %d %d",&op,&x,&y);
         if(op==1)
         	hb(x,y);
         else
         {
             int faa=find(x),fab=find(y);
             if(faa==fab)
             printf("Y\n");
             else
             printf("N\n");
         }
     }
     return 0;
 }

例题:

并查集 (模板)

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*