P8654 [蓝桥杯 2017 国 C] 合根植物---并查集!!!

news/2025/3/4 4:50:59/

P8654 [蓝桥杯 2017 国 C] 合根植物---并查集!!!

      • 题目
  • 并查集模板
  • 分析
      • 代码

题目

在这里插入图片描述

并查集模板

算法核心就是
1、查找

int find(int x) {if (d[x] == x)return x;elsereturn d[x] = find(d[x]);//注意这儿是一个赋值,不是判等//最终返回的也是一个d[x]的值
}

2、合并

void unity(int a, int b) {d[find(a)] = find(b);//注意这是先找到a,b的根,再将b的根赋给a的根
}

3、判断是否是根节点
if(d[i]==i) ans++;

4、模板

还模板!
什么都想走捷径!!
这道题就是标准的并查集题目,这道题的代码就是模板!!!!

分析

并查集(Union-Find)是一种数据结构,专门解决这种“分组”,最后问有多少个组的问题。

代码

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <math.h>
#include <queue>#include <cctype>
using namespace std;
int n, m, k;
int d[1000010], q[1000010];
long long ans;
//找根
int find(int x) {if (d[x] == x)return x;elsereturn d[x] = find(d[x]);//注意这儿是一个赋值,不是判等//最终返回的也是一个d[x]的值
}//合并
void unity(int a, int b) {d[find(a)] = find(b);//注意这是先找到a,b的根,再将b的根赋给a的根
}int main() {cin >> m >> n >> k;for (int i = 1; i <= n * m; i++)//先初始化,每个节点的根是本身d[i] = i;for (int i = 0; i < k; i++) {int a, b;cin >> a >> b;unity(a, b);//合并2个节点的根}//找根for (int i = 1; i <= m * n; i++) {//定义q来标记根节点,避免重复添加if (q[find(i) ] == 0) {q[find(i)]++;ans++;}}
//找根的代码可以换成
//	for(int i=1;i<=m*n;i++){
//		if(d[i]==i) ans++;
//	}cout << ans << endl;return 0;
}

http://www.ppmy.cn/news/1576456.html

相关文章

kubernetes 初学命令

基础命令 kubectl 运维命令常用&#xff1a; #查看pod创建过程以及相关日志 kubectl describe pod pod-command -n dev #查看某个pod&#xff0c;以yaml格式展示结果 kubectl get pod nginx -o yaml #查看pod 详情 以及对应的集群IP地址 kubectl get pods -o wide 1. kubetc…

遇到liunx服务器IO负载,读IO流量峰值347MB/s,排查并解决。

前言&#xff1a; 根据监控报警看到IO读的速度为347MB/s。 统计时间区段 统计时长 IOPS IO流量 状态 1 工作日上班时间段&#xff1a;08:00-18:00 1小时平均值 >2000 >200 MB/s 异常 4小时平均值 >1500 >150 MB/s 异常 8小时平均值 >1000 >100 MB/s 异常…

Hive JOIN过滤条件位置玄学:ON vs WHERE的量子纠缠

Hive JOIN过滤条件位置玄学:ON vs WHERE的量子纠缠 作为数据工程师,Hive JOIN就像吃火锅选蘸料——放错位置味道全变!今天带你破解字节/阿里等大厂高频面试题:ON和WHERE后的过滤条件究竟有什么不同? 一、核心差异对比表 特性ON子句WHERE子句执行时机JOIN操作时JOIN完成后…

VScode在Windows11中配置MSVC

因为MSVC编译器在vs当中&#xff0c;所以我们首先要安装vs的一部分组件。如果只是需要MSVC的话&#xff0c;工作负荷一个都不需要勾选&#xff0c;在单个组件里面搜索MSVC和windows11 SDK&#xff0c;其中一个是编译器&#xff0c;一个是头文件然后右下角安装即可。搜索Develop…

计算机毕业设计SpringBoot+Vue.js智慧图书管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

C# 类型转换

C# 类型转换 引言 在C#编程语言中&#xff0c;类型转换是一种将一个数据类型的变量转换成另一个数据类型的操作。类型转换是编程中常见的操作&#xff0c;特别是在处理不同数据类型的变量时。本文将详细探讨C#中的类型转换&#xff0c;包括隐式转换和显式转换&#xff0c;以及…

关于学习一门新的编程语言的策略

实践 实践 实践 那么如何实践呢 &#xff0c;very easy&#xff0c;测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测…

【STM32 基于PID的闭环电机控制系统】

STM32 基于PID的闭环电机控制系统 目录 STM32 基于PID的闭环电机控制系统一、PID算法在STM32F103C8T6中的实现思路二、代码实现与解释三、PID算法的调试与优化四、总结 一、PID算法在STM32F103C8T6中的实现思路 基本概念 • 目标 &#xff1a;通过PID算法调节电机的转速&#…