当前位置: 首页 > news >正文

网站运营一般做那些分析坪山附近网站建设

网站运营一般做那些分析,坪山附近网站建设,点样用外网访问自己做的网站,曲靖 曲靖网站建设软件(app)开发文章目录 837. 连通块中点的数量题目描述维护size的并查集 837. 连通块中点的数量 题目描述 给定一个包含 n 个点(编号为 1~n)的无向图,初始时图中没有边。 现在要进行 m 个操作,操作共有三种: C a b&a…

文章目录

  • 837. 连通块中点的数量
    • 题目描述
    • 维护size的并查集

837. 连通块中点的数量

题目描述

给定一个包含 n 个点(编号为 1~n)的无向图,初始时图中没有边。

现在要进行 m 个操作,操作共有三种:

  1. C a b,在点 a 和点 b 之间连一条边,a 和 b 可能相等;
  2. Q1 a b,询问点 a 和点 b 是否在同一个连通块中,a 和 b 可能相等;
  3. Q2 a,询问点 a 所在连通块中点的数量;

输入格式
第一行输入整数 n 和 m。

接下来 m 行,每行包含一个操作指令,指令为 C a b,Q1 a b 或 Q2 a 中的一种。

输出格式

对于每个询问指令 Q1 a b,如果 a 和 b 在同一个连通块中,则输出 Yes,否则输出 No。

对于每个询问指令 Q2 a,输出一个整数表示点 a 所在连通块中点的数量

每个结果占一行。

数据范围

1≤n,m≤105

输入样例:

5 5
C 1 2
Q1 1 2
Q2 1
C 2 5
Q2 5

输出样例:

Yes
2
3

维护size的并查集

#include<bits/stdc++.h> // 包含大多数标准库
using namespace std;const int z=1e5+10; // 定义常数z为最大点数加10,用于数组大小int fa[z], size[z]; // fa数组存储每个点的父节点,size数组存储每个连通块的大小// 并查集的查找函数,用于查找元素i的根节点,并执行路径压缩
int find(int i) {if(fa[i] != i) fa[i] = find(fa[i]); // 路径压缩,递归地将fa[i]更新为根节点return fa[i]; // 返回根节点
}// 主函数
int main() {int n, m; // n表示点的数量,m表示操作的数量cin >> n >> m; // 输入点的数量和操作的数量// 初始化并查集for (int i = 1; i <= n; i++) {fa[i] = i; // 每个点的父节点初始化为自己size[i] = 1; // 每个点所在连通块的大小初始化为1}// 循环处理m个操作while (m--) {string s; // 存储操作类型cin >> s; // 输入操作类型// 根据不同的操作类型进行操作if(s == "C") { // 连接操作int a, b;cin >> a >> b; // 输入要连接的两个点的编号if(find(a) == find(b)) continue; // 如果已经在同一个连通块中,无需操作// 否则,合并两个连通块size[find(b)] += size[find(a)]; // 更新根节点的连通块大小fa[find(a)] = find(b); // 将一个点的根节点连接到另一个点的根节点} else if(s == "Q1") { // 查询操作1,询问两个点是否连通int a, b;cin >> a >> b; // 输入要查询的两个点的编号if(find(a) == find(b)) cout << "Yes" << endl; // 如果根节点相同,输出Yeselse cout << "No" << endl; // 否则,输出No} else { // 查询操作2,询问连通块的大小int a;cin >> a; // 输入要查询的点的编号cout << size[find(a)] << endl; // 输出该点所在连通块的大小}}return 0;
}

在这段代码中,主要用到了两个全局数组fasizefa数组用来表示每个节点的父节点,初始化时每个节点都是自己的父节点。size数组用来表示以当前节点为根节点的连通块的大小,初始化为1。每次合并连通块时,会更新这两个数组的信息。

find函数是并查集的核心,用于查找节点的根节点,并在这个过程中进行路径压缩。

main函数中,代码首先接收输入的节点数和操作数,然后通过循环处理每一条操作指令。指令分为三种类型,分别对应代码中的三个分支。

  • C操作将两个节点连接在一起,如果它们不在同一个连通块中,会合并它们所在的连通块,并更新连通块大小。
  • Q1操作判断两个节点是否在同一个连通块中,输出结果。
  • Q2操作输出给定节点所在连通块的大小。

这个程序对应了题目描述中的需求,它可以有效地处理大量的连通性查询和连通块大小查询。

http://www.yayakq.cn/news/370799/

相关文章:

  • 网站建设学习内容阿里云服务器安装网站
  • 福建建设执业资格注册管理中心网站内链好的网站
  • 用户体验好的网站有了网站源码怎么做app
  • 广播电台网站建设方案网站搭建免费软件
  • 怎么做化妆品网站内容规划河南省旅游网站建设
  • 档案网站建设对比北京网页网站设计
  • 地方类门户网站创意广告图片
  • 本地的佛山网站建设wordpress根据字段判断
  • 模块建站工具株洲网站建设的公司怎么找
  • 上海网站制作建设中国芯片三巨头
  • 如何建立一个大型的网站抖音品牌推广方案
  • 如何在国外社交网站上做原单外贸四平网站建设服务
  • 南阳网站建设与管理跨境电商主要平台有哪些
  • 好看的商城网站网站开发demo版本
  • 网站改版 删除栏目高效网站建设与维护岗位职责
  • 石家庄哪家网站做的好中山app开发
  • 乐云seo网站建设性价比高iis网站
  • 网站建设金手指霸屏html5编辑器手机版下载
  • 做网站需要交管理费吗深圳前海自贸区注册公司政策
  • 网站建设兼职在哪找烟台网站营销
  • 网站80端口备案wordpress仿fe素材
  • 手机网站建设优化软件肇庆网站制作费用
  • 苏州网站运营公司江门网站如何制作
  • 易语言做网站简单教程wordpress建一个网站吗
  • 排名推广网站如何做网站微信支付
  • 重庆网站建设模板制作网站的视频
  • 旅游开发公司网站建设方案书杭州网站优化公司哪家好
  • 网站建设 工具网站做端口是什么情况
  • 网站设计怎么用黑色青岛做网站电话
  • 郑州网站建设设计wordpress 小视频模板