16 并查集

/*
学acwing的算法基础课学来的,喜欢的话多多支持呀。
*/
//最裸的并查集
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,m,p[N];
int size[N];//开辟一个size来维护一个新的集合的个数
int find(int x)//返回x的祖宗结点+路径压缩
{
    if(p[x]!=x) p[x]=find(p[x]);//递归来寻找
    return p[x];//返回祖宗结点
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
  for(int i=1;i<=n;i++) {
        p[i]=i;//初始化每个祖宗结点
        size[i]=1;//初始化每个刚开始的祖宗结点为1
  }
    while(m--)
   {
    char op[2];
    int a,b;
    cin>>op;//读入一个操作
    if(op[0]=='C')
    {
        cin>>a>>b;
        if(find(a)==find(b))continue;//假如是一个集合了,则不用合并
        size[find(b)]+=size[find(a)];//a合并到b的话,就把a的个数加到b中
        p[find(a)]=find(b);//假如是合并,则把其中一个的祖宗连接到另一个祖宗中
    }
    else if(op[1]=='1')//假如是匹配
    {
       cin>>a>>b;
      if(find(a)==find(b)) puts("YES");//匹配成功
      else puts("NO");  //失败
    }
    else{
        cin>>a;
        cout<<size[find(a)]<<endl;//输出该点祖宗的仔个数
    }
   }
    return 0;
}
/*到达胜利之前无法回头*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是50道关于并查集的判断题: 1. 并查集是一种数据结构,用于维护元素分组情况。 (√) 2. 并查集可以用于解决连通性问题。 (√) 3. 并查集只能用于处理无向图,不能处理有向图。 (×) 4. 并查集的时间复杂度为 O(n log n)。 (×) 5. 并查集中每个元素的代表元素相同,当且仅当这些元素在同一个集合中。 (√) 6. 并查集的初始化过程中,每个元素的父节点都指向自身。 (√) 7. 并查集的合并操作可以通过路径压缩优化。 (√) 8. 并查集的查找操作可以通过路径压缩优化。 (√) 9. 并查集中两个元素所在的集合相同,当且仅当它们的根节点相同。 (√) 10. 并查集中元素个数为 n,最多有 n 个集合。 (×) 11. 并查集中每个元素的父节点都是唯一确定的。 (√) 12. 并查集的路径压缩操作会改变每个元素的父节点。 (√) 13. 并查集的合并操作会改变每个元素的父节点。 (√) 14. 并查集的查找操作会改变每个元素的父节点。 (×) 15. 并查集可以用于解决最小生成树问题。 (√) 16. 并查集可以用于解决最短路径问题。 (×) 17. 并查集中每个元素的父节点最多只有一个。 (√) 18. 并查集中每个元素的子节点最多只有一个。 (×) 19. 并查集中每个元素的子节点可以有多个。 (√) 20. 并查集可以用于解决拓扑排序问题。 (×) 21. 并查集可以用于解决连通块问题。 (√) 22. 并查集的合并操作时间复杂度为 O(log n)。 (×) 23. 并查集的查找操作时间复杂度为 O(log n)。 (×) 24. 并查集的初始化时间复杂度为 O(n)。 (√) 25. 并查集的合并操作可以通过按秩合并优化。 (√) 26. 并查集的查找操作可以通过按秩合并优化。 (√) 27. 并查集中每个元素的祖先节点可以有多个。 (×) 28. 并查集可以用于解决区间合并问题。 (×) 29. 并查集可以用于解决最长公共祖先问题。 (×) 30. 并查集可以用于解决最大连通块问题。 (√) 31. 并查集可以用于解决最小连通块问题。 (×) 32. 并查集可以用于解决图的同构问题。 (×) 33. 并查集可以用于解决图的同构问题。 (×) 34. 并查集可以用于解决图的同构问题。 (×) 35. 并查集可以用于解决图的同构问题。 (×) 36. 并查集可以用于解决图的同构问题。 (×) 37. 并查集可以用于解决图的同构问题。 (×) 38. 并查集可以用于解决图的同构问题。 (×) 39. 并查集可以用于解决图的同构问题。 (×) 40. 并查集可以用于解决图的同构问题。 (×) 41. 并查集可以用于解决图的同构问题。 (×) 42. 并查集可以用于解决图的同构问题。 (×) 43. 并查集可以用于解决图的同构问题。 (×) 44. 并查集可以用于解决图的同构问题。 (×) 45. 并查集可以用于解决图的同构问题。 (×) 46. 并查集可以用于解决图的同构问题。 (×) 47. 并查集可以用于解决图的同构问题。 (×) 48. 并查集可以用于解决图的同构问题。 (×) 49. 并查集可以用于解决图的同构问题。 (×) 50. 并查集可以用于解决图的同构问题。 (×)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值