并查集

题意:

给出点数n,和操作数m;

每个操作给三个数字,op,u,v;

op=1,连接u,v

op=2,检查u,v是否连通

分析:

一道并查集模板题,首先知道什么是并查集,并查集是一个集合,支持合并与查询的功能;

并查集的建立:设立一个pre数组,令每一个元素的父亲为自己,pre[i]=i;

然后每当读入相连a,b,两点,只要两点不相等,我们随意让其中一个点成为另一个点的父亲;

每当读取a,b的连通性,我们可以查询a,b的父亲是否相等,如果不等,就查询父亲的父亲是否相等,同时,我们还可以做一个优化,即当a查询到它的爷爷时,将其并到它父亲的位置,这样下一次查询可以更快速.

代码:

#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 4000005;
const long long mod = 998244353;
int par[maxn];
long long ans1;int query(int u)
{if (par[u] == u)return u;return par[u] = query(par[u]);
}void add(int u, int v)
{int a = query(u);int b = query(v);if (a != b)par[a] = b;
}int main()
{int n, m;scanf("%d %d", &n, &m);int op, u, v;for (int i = 1; i <= n; i++)par[i] = i;while (m--){scanf("%d %d %d", &op, &u, &v);if (op == 0){add(u, v);}else if (op == 1){if (query(v) == query(u)){ans1 *= 2;ans1++;ans1 %= mod;}else{ans1 *= 2;ans1 %= mod;}}}printf("%lld", ans1);
}

最新文章

  1. Java web 环境搭建-Linux
  2. ubuntu16.04+cuda7.5
  3. UE4学习-程序崩溃,如何恢复工程
  4. 创建自己的共用js库
  5. mappedbytebuffer_Java NIO Buffer【MappedByteBuffer】概述与FileChannel的联系
  6. sql联接查询_SQL联接
  7. Java-Runoob-高级教程-实例-字符串:14. Java 实例 - 连接字符串
  8. Mysql删除数据报外键约束解决方法
  9. java高级能力_java高级技术工程师该具备哪些能力?
  10. 如何正确使用条码标签打印软件
  11. 微信计数器微信加粉计数器开发
  12. 怎样限制Word文档被复制粘贴?word限制编辑的使用技巧
  13. 【Android TV 开发】-->一些优秀 TV 开发相关框架 文章
  14. WARN: Establishing SSL connection without server‘s identity verification is not recommended. Acco...
  15. vue2.5版本源代码编译报 Could not load ..\vue\src\core/config 错误的问题 npm run dev 编译报错...
  16. c 语言count函数什么意思,在C ++ STL中设置count()函数
  17. 超市进销存之openGauss数据库的应用与实践
  18. java前端页面调用webservice_一个简单的Webservice的demo(中)_前端页面调用
  19. j3455安装linux 4k驱动,J3455安装centos步骤
  20. SEO知识(总结土著游民)(1)

热门文章

  1. UWB高精度定位技术原理与应用分析
  2. Vue 动态控制输入框的disabled属性
  3. 【Proxy】PAC模式和全局代理模式的区别
  4. java编辑环境变量path的路径_环境变量path配置(梦开始的地方)
  5. 扎心了,老铁!mysql编码问题引发的血案
  6. SQL注入是什么,如何避免SQL注入?
  7. 华为新系统鸿蒙手机测试,首个华为鸿蒙2.0测试 电池续航提升将近10%
  8. sublime txt
  9. 刷爆力扣之电话号码的字母组合
  10. STM32MP157 Linux系统移植开发篇14:Linux内核RGB LCD驱动移植