并查集模板题

简介: 并查集模板题

首先我们知道并查集是为了解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: 合并(Union):把两个不相交的集合合并为一个集合。查询(Find):查询两个元素是否在同一个集合中。

下面是一道模板题。


题目如下:


维护一个 n 点的无向图,支持:

  • 加入一条连接 u 和 v 的无向边
  • 查询 u和 v的连通性


由于本题数据较大,因此输出的时候采用特殊的输出方式:用 0 或 1代表每个询问的答案,将每个询问的答案依次从左到右排列,把得到的串视为一个二进制数,输出这个二进制数 mod 998244353 的值。

请务必使用快读。


输入格式


第一行包含两个整数 n,m表示点的个数和操作的数目。

接下来 m 行每行包括三个整数 op,u,v。

  • 如果 op=0,则表示加入一条连接 u 和 v 的无向边;
  • 如果 op=1,则表示查询 u 和 v 的连通性。


输出格式

一行包括一个整数表示答案。


样例

Input Output
1. 3 6
2. 1 1 0
3. 0 0 1
4. 1 0 1
5. 1 1 2
6. 0 2 1
7. 1 2 1
5


答案串为 0101。

数据范围与提示

n≤4000000,m≤8000000


下面我们分析一下这个题目;


拿样例解释一下;比如开头1 1 0;就代表查询1 0,是否连接,不连接就输出0,而后面的 0 0 1,表示连接 0 1,所以后面的1 0 1,在查询后显示0 1连接即输出1,依此类推,得到答案串0101;


下面是ac代码,关建点都有注释。

f58230e9f063709cf3167704f4efdf14.gif


学习算法

#include<iostream>
using namespace std;
int father[4000000];
long long ans=0;
int k=1;
int temp;
const long long mod=998244353;
int find(int k)//父亲节点
{
  if(father[k]!=k)//这里的意思是如果一个节点不等于他自己就不是根节点,然后递归 
    return find(father[k]);
  return father[k];
}
void unionn(int x,int y)//连接
{
  x=find(x);
  y=find(y);
  if(x!=y)
    father[y]=x;
} 
int main()
{
  int m,n,i,a,b,s1,s2,op;
cin>>n>>m;
  for(i=1;i<=n;i++)//先自己就是自己的父亲节点
    father[i]=i;
  for(i=1;i<=m;i++)
  {
    scanf("%d %d %d",&op,&a,&b);
    if(op==0)
    {
      unionn(a,b);//连接边
    }
    else
    {
      if(find(a)==find(b))//如果父亲节点相同
      {
        ans*=2;
        ans++;
        ans%=mod;
      }
      else
      {
        ans*=2;
        ans%=mod;
      }
    }
  } 
  cout<<ans<<endl;//ok
}

f58230e9f063709cf3167704f4efdf14.gif


学习算法

相关文章
|
3天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
13天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
509 203
|
5天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
730 157
|
11天前
|
人工智能 自然语言处理 安全
国内主流Agent工具功能全维度对比:从技术内核到场景落地,一篇读懂所有选择
2024年全球AI Agent市场规模达52.9亿美元,预计2030年将增长至471亿美元,亚太地区增速领先。国内Agent工具呈现“百花齐放”格局,涵盖政务、金融、电商等多场景。本文深入解析实在智能实在Agent等主流产品,在技术架构、任务规划、多模态交互、工具集成等方面进行全维度对比,结合市场反馈与行业趋势,为企业及个人用户提供科学选型指南,助力高效落地AI智能体应用。
|
5天前
|
数据采集 消息中间件 人工智能
跨系统数据搬运的全方位解析,包括定义、痛点、技术、方法及智能体解决方案
跨系统数据搬运打通企业数据孤岛,实现CRM、ERP等系统高效互通。伴随数字化转型,全球市场规模超150亿美元,中国年增速达30%。本文详解其定义、痛点、技术原理、主流方法及智能体新范式,结合实在Agent等案例,揭示从数据割裂到智能流通的实践路径,助力企业降本增效,释放数据价值。
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
673 46